Add mock API and reorg code for clarity

This commit is contained in:
Paul Frazee 2022-07-18 15:24:37 -05:00
parent de87ec17d1
commit 1d00f3b984
29 changed files with 356 additions and 168 deletions

View file

@ -4,7 +4,7 @@ import * as ucan from 'ucans'
import {InAppBrowser} from 'react-native-inappbrowser-reborn'
import {isWeb} from '../platform/detection'
import {extractHashFragment, makeAppUrl} from '../platform/urls'
import {ReactNativeStore, parseUrlForUcan} from '../state/auth'
import {ReactNativeStore, parseUrlForUcan} from '../state/lib/auth'
import * as env from '../env'
export async function requestAppUcan(

View file

@ -1,7 +1,7 @@
import * as auth from '@adxp/auth'
import * as ucan from 'ucans'
import {makeAppUrl} from '../platform/urls'
import {ReactNativeStore} from '../state/auth'
import {ReactNativeStore} from '../state/lib/auth'
import * as env from '../env'
export async function requestAppUcan(

View file

@ -1,57 +0,0 @@
import React from 'react'
import {Pressable, View, StyleSheet} from 'react-native'
import {Link} from '@react-navigation/native'
import {useRoute} from '@react-navigation/native'
export const NavItem: React.FC<{label: string; screen: string}> = ({
label,
screen,
}) => {
const route = useRoute()
return (
<View>
<Pressable
style={state => [
// @ts-ignore it does exist! (react-native-web) -prf
state.hovered && styles.navItemHovered,
]}>
<Link
style={[
styles.navItemLink,
route.name === screen && styles.navItemLinkSelected,
]}
to={{screen, params: {}}}>
{label}
</Link>
</Pressable>
</View>
)
}
export const DesktopLeftColumn: React.FC = () => {
return (
<View style={styles.container}>
<NavItem screen="Home" label="Home" />
<NavItem screen="Search" label="Search" />
<NavItem screen="Notifications" label="Notifications" />
</View>
)
}
const styles = StyleSheet.create({
container: {
position: 'absolute',
left: 'calc(50vw - 500px)',
width: '200px',
height: '100%',
},
navItemHovered: {
backgroundColor: 'gray',
},
navItemLink: {
padding: '1rem',
},
navItemLinkSelected: {
color: 'blue',
},
})

View file

@ -1,19 +0,0 @@
import React from 'react'
import {Text, View, StyleSheet} from 'react-native'
export const DesktopRightColumn: React.FC = () => {
return (
<View style={styles.container}>
<Text>Right Column</Text>
</View>
)
}
const styles = StyleSheet.create({
container: {
position: 'absolute',
right: 'calc(50vw - 500px)',
width: '200px',
height: '100%',
},
})

View file

@ -1,35 +0,0 @@
import React from 'react'
import {observer} from 'mobx-react-lite'
import {View, StyleSheet} from 'react-native'
import {DesktopLeftColumn} from './left-column'
import {DesktopRightColumn} from './right-column'
import {useStores} from '../../state'
export const DesktopWebShell: React.FC = observer(({children}) => {
const store = useStores()
return (
<View style={styles.outerContainer}>
{store.session.isAuthed ? (
<>
<DesktopLeftColumn />
<View style={styles.innerContainer}>{children}</View>
<DesktopRightColumn />
</>
) : (
<View style={styles.innerContainer}>{children}</View>
)}
</View>
)
})
const styles = StyleSheet.create({
outerContainer: {
height: '100%',
},
innerContainer: {
marginLeft: 'auto',
marginRight: 'auto',
width: '600px',
height: '100%',
},
})

View file

@ -1,12 +0,0 @@
import React from 'react'
import {SafeAreaView} from 'react-native'
import {isDesktopWeb} from './detection'
import {DesktopWebShell} from './desktop-web/shell'
export const Shell: React.FC = ({children}) => {
return isDesktopWeb ? (
<DesktopWebShell>{children}</DesktopWebShell>
) : (
<SafeAreaView>{children}</SafeAreaView>
)
}