mirror of
https://github.com/tooot-app/app
synced 2025-06-05 22:19:13 +02:00
Option to change how to handle links
This commit is contained in:
17
src/utils/openLink.ts
Normal file
17
src/utils/openLink.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import { store } from '@root/store'
|
||||
import * as Linking from 'expo-linking'
|
||||
import * as WebBrowser from 'expo-web-browser'
|
||||
import { getSettingsBrowser } from './slices/settingsSlice'
|
||||
|
||||
const openLink = async (url: string) => {
|
||||
switch (getSettingsBrowser(store.getState())) {
|
||||
case 'internal':
|
||||
await WebBrowser.openBrowserAsync(url)
|
||||
break
|
||||
case 'external':
|
||||
await Linking.openURL(url)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
export default openLink
|
@ -6,11 +6,13 @@ import { RootState } from '@root/store'
|
||||
export type SettingsState = {
|
||||
language: 'zh' | 'en' | undefined
|
||||
theme: 'light' | 'dark' | 'auto'
|
||||
browser: 'internal' | 'external'
|
||||
}
|
||||
|
||||
const initialState = {
|
||||
language: undefined,
|
||||
theme: 'auto'
|
||||
theme: 'auto',
|
||||
browser: 'internal'
|
||||
}
|
||||
|
||||
// export const updateLocal = createAsyncThunk(
|
||||
@ -70,6 +72,12 @@ const settingsSlice = createSlice({
|
||||
action: PayloadAction<NonNullable<SettingsState['theme']>>
|
||||
) => {
|
||||
state.theme = action.payload
|
||||
},
|
||||
changeBrowser: (
|
||||
state,
|
||||
action: PayloadAction<NonNullable<SettingsState['browser']>>
|
||||
) => {
|
||||
state.browser = action.payload
|
||||
}
|
||||
}
|
||||
// extraReducers: builder => {
|
||||
@ -81,6 +89,11 @@ const settingsSlice = createSlice({
|
||||
|
||||
export const getSettingsLanguage = (state: RootState) => state.settings.language
|
||||
export const getSettingsTheme = (state: RootState) => state.settings.theme
|
||||
export const getSettingsBrowser = (state: RootState) => state.settings.browser
|
||||
|
||||
export const { changeLanguage, changeTheme } = settingsSlice.actions
|
||||
export const {
|
||||
changeLanguage,
|
||||
changeTheme,
|
||||
changeBrowser
|
||||
} = settingsSlice.actions
|
||||
export default settingsSlice.reducer
|
||||
|
Reference in New Issue
Block a user