1import * as React from 'react' 2import * as Types from '../../constants/types/devices' 3import * as Constants from '../../constants/devices' 4import * as Container from '../../util/container' 5import * as Sb from '../../stories/storybook' 6import DevicePage from './container' 7 8const makeDevice = (options: any) => { 9 const {revoked, type, current, lastUsed = true} = options 10 return Constants.makeDevice({ 11 created: options.created, 12 currentDevice: !!current, 13 deviceID: Types.stringToDeviceID(options.deviceID), 14 lastUsed: lastUsed ? new Date('2002-10-10T01:23:45').getTime() : 0, 15 name: `My ${type}`, 16 revokedAt: revoked ? new Date('2002-10-11T01:23:45').getTime() : undefined, 17 type, 18 }) 19} 20 21const common = Sb.createStoreWithCommon() 22 23const store = Container.produce(common, draftState => { 24 const deviceMap = new Map(draftState.devices.deviceMap) 25 deviceMap.set('backup', makeDevice({created: 0, deviceID: 'backup', type: 'backup'})) 26 deviceMap.set( 27 'backup revoked', 28 makeDevice({created: 1, deviceID: 'backup revoked', revoked: true, type: 'backup'}) 29 ) 30 deviceMap.set('desktop', makeDevice({created: 2, deviceID: 'desktop', type: 'desktop'})) 31 deviceMap.set( 32 'desktop current', 33 makeDevice({created: 3, current: true, deviceID: 'desktop current', type: 'desktop'}) 34 ) 35 deviceMap.set( 36 'desktop no last', 37 makeDevice({created: 4, deviceID: 'desktop no last', lastUsed: false, type: 'desktop'}) 38 ) 39 deviceMap.set( 40 'desktop revoked', 41 makeDevice({created: 5, deviceID: 'desktop revoked', revoked: true, type: 'desktop'}) 42 ) 43 deviceMap.set('mobile', makeDevice({created: 6, deviceID: 'mobile', type: 'mobile'})) 44 deviceMap.set( 45 'mobile revoked', 46 makeDevice({created: 7, deviceID: 'mobile revoked', revoked: true, type: 'mobile'}) 47 ) 48 draftState.devices.deviceMap = deviceMap 49}) 50 51const storeNOPW = Container.produce(common, draftState => { 52 const deviceMap = new Map(draftState.devices.deviceMap) 53 deviceMap.set('desktop last nopw', makeDevice({deviceID: 'desktop last nopw', type: 'desktop'})) 54 draftState.devices.deviceMap = deviceMap 55 draftState.settings.password.randomPW = true 56}) 57 58const load = () => { 59 Sb.storiesOf('Devices/Device', module) 60 .addDecorator((story: any) => <Sb.MockStore store={store}>{story()}</Sb.MockStore>) 61 .add('Desktop', () => <DevicePage {...Sb.createNavigator({deviceID: 'desktop'})} />) 62 .add('Desktop no last used', () => <DevicePage {...Sb.createNavigator({deviceID: 'desktop no last'})} />) 63 .add('Desktop current', () => <DevicePage {...Sb.createNavigator({deviceID: 'desktop current'})} />) 64 .add('Desktop Revoked', () => <DevicePage {...Sb.createNavigator({deviceID: 'desktop revoked'})} />) 65 .add('Mobile', () => <DevicePage {...Sb.createNavigator({deviceID: 'mobile'})} />) 66 .add('Mobile Revoked', () => <DevicePage {...Sb.createNavigator({deviceID: 'mobile revoked'})} />) 67 .add('Paper key', () => <DevicePage {...Sb.createNavigator({deviceID: 'backup'})} />) 68 .add('Paper key Revoked', () => <DevicePage {...Sb.createNavigator({deviceID: 'backup revoked'})} />) 69 Sb.storiesOf('Devices/Device/NOPW', module) 70 .addDecorator((story: any) => <Sb.MockStore store={storeNOPW}>{story()}</Sb.MockStore>) 71 .add('Desktop only device', () => <DevicePage {...Sb.createNavigator({deviceID: 'desktop last nopw'})} />) 72} 73 74export default load 75