mirror of https://github.com/tooot-app/app
44 lines
1.0 KiB
TypeScript
44 lines
1.0 KiB
TypeScript
import apiGeneral from '@api/general'
|
|
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
|
|
import { RootState } from '@root/store'
|
|
import Constants from 'expo-constants'
|
|
|
|
export const retriveVersionLatest = createAsyncThunk(
|
|
'version/latest',
|
|
async () => {
|
|
const res = await apiGeneral<{ latest: string }>({
|
|
method: 'get',
|
|
domain: 'tooot.app',
|
|
url: 'version.json'
|
|
})
|
|
return res.body.latest
|
|
}
|
|
)
|
|
|
|
export type VersionState = {
|
|
update: boolean
|
|
}
|
|
|
|
export const versionInitialState = {
|
|
update: false
|
|
}
|
|
|
|
const versionSlice = createSlice({
|
|
name: 'version',
|
|
initialState: versionInitialState,
|
|
reducers: {},
|
|
extraReducers: builder => {
|
|
builder.addCase(retriveVersionLatest.fulfilled, (state, action) => {
|
|
if (action.payload && Constants.manifest?.version) {
|
|
if (parseInt(action.payload) > parseInt(Constants.manifest.version)) {
|
|
state.update = true
|
|
}
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
export const getVersionUpdate = (state: RootState) => state.version.update
|
|
|
|
export default versionSlice.reducer
|