mirror of
https://github.com/samuelthomas2774/nxapi.git
synced 2026-04-26 00:13:08 -05:00
Fix preferences window never loads if Discord presence options have never been set
This commit is contained in:
parent
b7299cb001
commit
99f263cef8
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
import React, { useCallback, useEffect, useMemo, useReducer, useState } from 'react';
|
||||||
import { StyleSheet, Text, TextInput, TouchableHighlight, TouchableOpacity, useColorScheme, View } from 'react-native';
|
import { StyleSheet, Text, TextInput, TouchableHighlight, TouchableOpacity, useColorScheme, View } from 'react-native';
|
||||||
import { CheckBox, Picker } from 'react-native-web';
|
import { CheckBox, Picker } from 'react-native-web';
|
||||||
import { DiscordPresencePlayTime } from '../../../discord/types.js';
|
import { DiscordPresencePlayTime } from '../../../discord/types.js';
|
||||||
|
|
@ -35,6 +35,8 @@ export default function Preferences(props: PreferencesProps) {
|
||||||
|
|
||||||
const [discord_options, , discord_options_state, forceRefreshDiscordOptions] =
|
const [discord_options, , discord_options_state, forceRefreshDiscordOptions] =
|
||||||
useAsync(useCallback(() => ipc.getSavedDiscordPresenceOptions(), [ipc]));
|
useAsync(useCallback(() => ipc.getSavedDiscordPresenceOptions(), [ipc]));
|
||||||
|
const [has_ever_loaded_discord_options, setHasLoadedDiscordOptions] = useReducer(() => true, false);
|
||||||
|
useEffect(() => (discord_options_state === RequestState.LOADED && setHasLoadedDiscordOptions(), undefined));
|
||||||
|
|
||||||
const [discord_friend_code, setDiscordFriendCodeValue] = useState(discord_options?.friend_code ?? '');
|
const [discord_friend_code, setDiscordFriendCodeValue] = useState(discord_options?.friend_code ?? '');
|
||||||
const discord_friend_code_valid = !discord_friend_code || discord_friend_code.match(/^\d{4}-\d{4}-\d{4}$/);
|
const discord_friend_code_valid = !discord_friend_code || discord_friend_code.match(/^\d{4}-\d{4}-\d{4}$/);
|
||||||
|
|
@ -85,7 +87,7 @@ export default function Preferences(props: PreferencesProps) {
|
||||||
|
|
||||||
if (!users ||
|
if (!users ||
|
||||||
!login_item ||
|
!login_item ||
|
||||||
!discord_options ||
|
!has_ever_loaded_discord_options ||
|
||||||
discord_presence_source_state !== RequestState.LOADED
|
discord_presence_source_state !== RequestState.LOADED
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -181,12 +183,12 @@ export default function Preferences(props: PreferencesProps) {
|
||||||
{is_discord_friend_code_self ? <View style={styles.friendCodeCheckbox}>
|
{is_discord_friend_code_self ? <View style={styles.friendCodeCheckbox}>
|
||||||
<View style={styles.checkboxContainer}>
|
<View style={styles.checkboxContainer}>
|
||||||
<CheckBox
|
<CheckBox
|
||||||
value={!!discord_options.friend_code}
|
value={!!discord_options?.friend_code}
|
||||||
onValueChange={v => setDiscordFriendCode(v ? discord_friend_code_self : undefined)}
|
onValueChange={v => setDiscordFriendCode(v ? discord_friend_code_self : undefined)}
|
||||||
color={'#' + (accent_colour ?? DEFAULT_ACCENT_COLOUR)}
|
color={'#' + (accent_colour ?? DEFAULT_ACCENT_COLOUR)}
|
||||||
style={styles.checkbox}
|
style={styles.checkbox}
|
||||||
/>
|
/>
|
||||||
<TouchableOpacity style={styles.checkboxLabel} onPress={() => setDiscordFriendCode(discord_options.friend_code ? undefined : discord_friend_code_self)}>
|
<TouchableOpacity style={styles.checkboxLabel} onPress={() => setDiscordFriendCode(discord_options?.friend_code ? undefined : discord_friend_code_self)}>
|
||||||
<Text style={theme.text}>Share my friend code</Text>
|
<Text style={theme.text}>Share my friend code</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user