import { NavigationNative, React } from "@vendetta/metro/common"; import { storage } from "@vendetta/plugin"; import { useProxy } from "@vendetta/storage"; import { getAssetIDByName } from "@vendetta/ui/assets"; import { Forms } from "@vendetta/ui/components"; import { showToast } from "@vendetta/ui/toasts"; import { currentSettings } from "."; import Constants from "./constants"; import { initialize } from "./utils"; import { useEffect } from "react"; import { ScrollView, Text, TouchableOpacity } from "react-native"; const { FormInput, FormDivider, FormSwitchRow, FormText, FormIcon } = Forms; function UpdateButton() { async function onPressCallback() { for (const key in storage) { if (storage[key] === false || storage[key]) { currentSettings[key] = storage[key]; } } console.log("Applying settings..."); await initialize(); showToast("Settings updated!", getAssetIDByName("Check")); } return UPDATE ; } export default function Settings() { const settings = useProxy(storage) as LFMSettings; const navigation = NavigationNative.useNavigation(); useEffect(() => { navigation.setOptions({ title: "Last.fm Configuration", headerRight: UpdateButton }); }, []); return ( settings.appName = value.trim()} title="Discord Application Name" placeholder={Constants.DEFAULT_APP_NAME} returnKeyType="done" /> settings.username = value.trim()} title="Last.fm username" helpText={!settings.username && {"This field is required!"}} placeholder="wumpus123" returnKeyType="done" /> settings.timeInterval = value} title="Update interval (in seconds)" placeholder={Constants.DEFAULT_TIME_INTERVAL.toString()} keyboardType="numeric" returnKeyType="done" /> } value={settings.showTimestamp} onValueChange={(value: boolean) => settings.showTimestamp = value} /> } value={settings.listeningTo} onValueChange={(value: boolean) => settings.listeningTo = value} /> } value={settings.ignoreSpotify} onValueChange={(value: boolean) => settings.ignoreSpotify = value} /> } value={settings.verboseLogging} onValueChange={(value: boolean) => settings.verboseLogging = value} /> ); }