save spotify config

This commit is contained in:
2024-12-09 01:13:41 +01:00
parent 1033231838
commit c962c29f35
5 changed files with 94 additions and 49 deletions
+40 -14
View File
@@ -1,24 +1,50 @@
import ThemedButton from "@/src/components/themed/ThemedButton";
import ThemedBackground from "@/src/components/themed/ThemedBackground";
import {useAuth} from "@/src/context/AuthProvider";
import {useRouter} from "expo-router";
import ThemedHeader from "@/src/components/themed/ThemedHeader";
import React, {useEffect, useState} from "react";
import Checkbox from 'expo-checkbox';
import {StyleSheet, View} from "react-native";
import {useTheme} from "@/src/context/ThemeProvider";
import ThemedParagraph from "@/src/components/themed/ThemedParagraph";
export default function HomeScreen() {
const {logout} = useAuth();
const router = useRouter();
const [idle, setIdle] = useState(false);
const {authenticatedUser} = useAuth();
const {theme} = useTheme();
useEffect(() => {
setIdle(authenticatedUser?.lastState.global.mode === "idle")
}, [])
return (
<ThemedBackground>
<ThemedHeader>Welcome to the Home Page!</ThemedHeader>
<ThemedButton mode={"outlined"} onPress={() => {
console.log("Button pressed");
logout().then(() => {
router.replace("/login");
});
}
}>
Logout
</ThemedButton>
<ThemedHeader>Willkommen!</ThemedHeader>
<View style={styles.section}>
<Checkbox
style={styles.checkbox}
value={idle}
onValueChange={setIdle}
color={idle ? theme.colors.tertiary : undefined}
/>
<ThemedParagraph>Energiesparmodus</ThemedParagraph>
</View>
</ThemedBackground>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginHorizontal: 16,
marginVertical: 32,
},
section: {
flexDirection: 'row',
alignItems: 'center',
},
paragraph: {
fontSize: 15,
},
checkbox: {
margin: 8,
},
});
+28 -12
View File
@@ -1,39 +1,55 @@
import ThemedHeader from "@/src/components/themed/ThemedHeader";
import React, {useState} from "react";
import React from "react";
import ThemedBackground from "@/src/components/themed/ThemedBackground";
import ChangePasswordModal from "@/src/components/ChangePasswordModal";
import ThemeToggleButton from "@/src/components/ThemeToggleButton";
import SpotifyAuthButton from "@/src/components/SpotifyAuthButton";
import {Token} from "@/src/services/RestService";
import {Paragraph, Text} from 'react-native-paper';
import {RestService, Token} from "@/src/services/RestService";
import {useAuth} from "@/src/context/AuthProvider";
import {StyleSheet, View} from "react-native";
import ThemedButton from "@/src/components/themed/ThemedButton";
import {useRouter} from "expo-router";
export default function SettingsScreen() {
const {token: jwtToken, authenticatedUser} = useAuth();
const [token, setToken] = useState<Token | null>(null);
const {token: jwtToken, authenticatedUser, logout} = useAuth();
const router = useRouter();
const handleAuthSuccess = (token: Token) => {
setToken(token);
console.log('Erhaltener Authentifizierungscode:', token);
const spotifyConfig = {
accessToken: token.access_token,
refreshToken: token.refresh_token,
scope: token.scope,
expirationDate: new Date(Date.now() + token.expires_in * 1000),
};
RestService.updateSelfSpotifyConfig(spotifyConfig, jwtToken!).then((result) => {
console.log("Spotify Token gespeichert");
console.log(result);
});
};
return (
<ThemedBackground>
<ThemedHeader>
Settings
</ThemedHeader>
<View style={styles.container}>
<Paragraph>Guten Tag, {authenticatedUser?.name}</Paragraph>
<ThemedHeader>Guten Tag, {authenticatedUser?.name}</ThemedHeader>
<ChangePasswordModal/>
<ThemeToggleButton/>
<SpotifyAuthButton
onAuthSuccess={handleAuthSuccess}
jwtToken={jwtToken!}
disabled={authenticatedUser?.spotifyConfig !== null}
/>
{token && <Text>Erhaltener Code: {token.access_token}</Text>}
</View>
<ThemedButton mode={"outlined"} onPress={() => {
console.log("Button pressed");
logout().then(() => {
router.replace("/login");
});
}
}>
Logout
</ThemedButton>
</ThemedBackground>
);
}