* [UI > Components] Add Discord's button * [SafeMode] Initial work, basic ErrorBoundary patch * [SafeMode] Custom error boundary (#57) * [SafeMode] Add mostly complete custom error boundary * [SafeMode] Use Button from @ui/components in error boundary * [SafeMode] Wrap the error boundary in our own error boundary * [SafeMode > ErrorBoundary] Code-style changes --------- Co-authored-by: Beef <beefers@riseup.net> * [TS] Add basic type for Discord's button * [UI] Move Codeblock to components, and use it * [UI > Settings] Allow disabling the ErrorBoundary in CustomPage * [UI > Settings] Move the ErrorBoundary triggers to Developer * [TS] Add Codeblock to types * [TS] Use ButtonColors in Button type * [SafeMode > ErrorBoundary] Rework * [UI] Add HelpMessage to components * [SafeMode] Proper implementation * [Global] SafeMode is optional (#59) * [UI > Developer] Restore the balance * [SafeMode > ErrorBoundary] Optimise for tablet UI * [SafeMode] Last-minute fixes --------- Co-authored-by: Jack <30497388+FieryFlames@users.noreply.github.com> Co-authored-by: Jack Matthews <jm5112356@gmail.com>
36 lines
No EOL
1.5 KiB
TypeScript
36 lines
No EOL
1.5 KiB
TypeScript
import { ButtonColors } from "@types";
|
|
import { ReactNative as RN } from "@metro/common";
|
|
import { themes } from "@lib/themes";
|
|
import { useProxy } from "@lib/storage";
|
|
import { ErrorBoundary, Button, HelpMessage } from "@ui/components";
|
|
import settings from "@lib/settings";
|
|
import ThemeCard from "@ui/settings/components/ThemeCard";
|
|
|
|
export default function Themes() {
|
|
useProxy(settings);
|
|
useProxy(themes);
|
|
|
|
return (
|
|
<ErrorBoundary>
|
|
<RN.View style={{ flex: 1 }}>
|
|
{settings.safeMode?.enabled && <RN.View style={{ margin: 10 }}>
|
|
<HelpMessage messageType={0}>You are in Safe Mode, meaning themes have been temporarily disabled.{settings.safeMode?.currentThemeId && " If a theme appears to be causing the issue, you can press below to disable it persistently."}</HelpMessage>
|
|
{settings.safeMode?.currentThemeId && <Button
|
|
text="Disable Theme"
|
|
color={ButtonColors.BRAND}
|
|
size="small"
|
|
onPress={() => {
|
|
delete settings.safeMode?.currentThemeId;
|
|
}}
|
|
style={{ marginTop: 8 }}
|
|
/>}
|
|
</RN.View>}
|
|
<RN.FlatList
|
|
data={Object.values(themes)}
|
|
renderItem={({ item, index }) => <ThemeCard theme={item} index={index} />}
|
|
keyExtractor={item => item.id}
|
|
/>
|
|
</RN.View>
|
|
</ErrorBoundary>
|
|
)
|
|
} |