Add a temporary lexicon refactor guard (#235)

* Add a temporary lexicon refactor guard

* Fix test

* Fix tsconfig formatting
zio/stable
Paul Frazee 2023-02-28 11:57:49 -06:00 committed by GitHub
parent fcd8c7b037
commit dc7b5a34e7
5 changed files with 54 additions and 3 deletions

View File

@ -28,6 +28,7 @@ const App = observer(() => {
analytics.init(store) analytics.init(store)
notifee.init(store) notifee.init(store)
SplashScreen.hide() SplashScreen.hide()
store.hackCheckIfUpgradeNeeded()
Linking.getInitialURL().then((url: string | null) => { Linking.getInitialURL().then((url: string | null) => {
if (url) { if (url) {
store.nav.handleLink(url) store.nav.handleLink(url)

View File

@ -7,7 +7,7 @@ const segmentClient = createClient({
writeKey: '8I6DsgfiSLuoONyaunGoiQM7A6y2ybdI', writeKey: '8I6DsgfiSLuoONyaunGoiQM7A6y2ybdI',
trackAppLifecycleEvents: false, trackAppLifecycleEvents: false,
}) })
export const track = segmentClient.track.bind(segmentClient) export const track = segmentClient?.track?.bind?.(segmentClient)
export {useAnalytics} from '@segment/analytics-react-native' export {useAnalytics} from '@segment/analytics-react-native'

View File

@ -2,7 +2,7 @@
* The root store is the base of all modeled state. * The root store is the base of all modeled state.
*/ */
import {makeAutoObservable} from 'mobx' import {makeAutoObservable, runInAction} from 'mobx'
import {AtpAgent} from '@atproto/api' import {AtpAgent} from '@atproto/api'
import {createContext, useContext} from 'react' import {createContext, useContext} from 'react'
import {DeviceEventEmitter, EmitterSubscription} from 'react-native' import {DeviceEventEmitter, EmitterSubscription} from 'react-native'
@ -39,6 +39,23 @@ export class RootStoreModel {
profiles = new ProfilesViewModel(this) profiles = new ProfilesViewModel(this)
linkMetas = new LinkMetasViewModel(this) linkMetas = new LinkMetasViewModel(this)
// HACK
// this flag is to track the lexicon breaking refactor
// it should be removed once we get that done
// -prf
hackUpgradeNeeded = false
async hackCheckIfUpgradeNeeded() {
try {
const res = await fetch('https://bsky.social/xrpc/app.bsky.feed.getLikes')
await res.text()
runInAction(() => {
this.hackUpgradeNeeded = res.status !== 501
})
} catch (e) {
this.log.error('Failed to hackCheckIfUpgradeNeeded', {e})
}
}
constructor(agent: AtpAgent) { constructor(agent: AtpAgent) {
this.agent = agent this.agent = agent
makeAutoObservable(this, { makeAutoObservable(this, {

View File

@ -362,6 +362,39 @@ export const MobileShell: React.FC = observer(() => {
// transform: [{scale: newTabInterp}], // transform: [{scale: newTabInterp}],
// } // }
if (store.hackUpgradeNeeded) {
return (
<View style={styles.outerContainer}>
<View style={[s.flexCol, s.p20, s.h100pct]}>
<View style={s.flex1} />
<View>
<Text type="title-2xl" style={s.pb10}>
Update required
</Text>
<Text style={[s.pb20, s.bold]}>
Please update your app to the latest version. If no update is
available yet, please check the App Store in a day or so.
</Text>
<Text type="title" style={s.pb10}>
What's happening?
</Text>
<Text style={s.pb10}>
We're in the final stages of the AT Protocol's v1 development. To
make sure everything works as well as possible, we're making final
breaking changes to the APIs.
</Text>
<Text>
If we didn't botch this process, a new version of the app should
be available now.
</Text>
</View>
<View style={s.flex1} />
<View style={s.footerSpacer} />
</View>
</View>
)
}
if (!store.session.hasSession) { if (!store.session.hasSession) {
return ( return (
<View style={styles.outerContainer}> <View style={styles.outerContainer}>

View File

@ -9,4 +9,4 @@
"view/*": ["./src/view/*"] "view/*": ["./src/view/*"]
} }
} }
} }