@@ -190,6 +247,12 @@ export default function VideoPlayerPage({
+ {/*
+
+ {extra}
+
+
*/}
+
@@ -209,17 +272,32 @@ export default function VideoPlayerPage({
-
+
{title}
:
{' '}
@@ -230,27 +308,31 @@ export default function VideoPlayerPage({
- {sourceVideoURL ? (
-
- ) : (
- ''
- )}
+ {
+ sourceVideoURL
+ ? (
+
+ )
+ : (
+ ''
+ )
+ }
diff --git a/frontend/pages/_app.tsx b/frontend/pages/_app.tsx
index 59d3836..be009f0 100644
--- a/frontend/pages/_app.tsx
+++ b/frontend/pages/_app.tsx
@@ -155,7 +155,7 @@ function GDQArchiveApp({
body: formData,
});
- mutate({ locale: value });
+ mutate({ ...userData, locale: value });
setMessages(await loadLocaleData(value));
setIsChangingLocale(false);
@@ -190,7 +190,7 @@ function GDQArchiveApp({
body: formData,
});
- mutate({ enableDark: value });
+ mutate({ ...userData, enableDark: value });
triggerDarkToggleAnimation();
setIsChangingDarkMode(false);
diff --git a/frontend/pages/api/changePreferences.ts b/frontend/pages/api/changePreferences.ts
index 7df1139..5b25a03 100644
--- a/frontend/pages/api/changePreferences.ts
+++ b/frontend/pages/api/changePreferences.ts
@@ -11,6 +11,11 @@ export default withSession(async (req, res) => {
return;
}
+ if (req.body.volume !== null && req.body.volume !== undefined) {
+ const volume = parseFloat(req.body.volume);
+ req.session.set('volume', volume);
+ }
+
if (req.body.enableDark) {
const enableDark = parseBool(req.body.enableDark);
req.session.set('enable-dark', enableDark);
diff --git a/frontend/pages/api/user.ts b/frontend/pages/api/user.ts
index c113aab..108424b 100644
--- a/frontend/pages/api/user.ts
+++ b/frontend/pages/api/user.ts
@@ -4,11 +4,13 @@ import withSession from '../../util/session';
export default withSession(async (req, res) => {
const enableDark = req.session.get('enable-dark') || false;
const locale = req.session.get('locale') || defaultLocale;
+ const volume = req.session.get('volume') || 0.5;
res.setHeader('cache-control', 'public, max-age=0, must-revalidate');
res.json({
enableDark,
locale,
+ volume,
});
});
diff --git a/frontend/util/api.ts b/frontend/util/api.ts
index 3f6348a..584001b 100644
--- a/frontend/util/api.ts
+++ b/frontend/util/api.ts
@@ -63,3 +63,28 @@ export function getDownloadURL(id: string, fileName: string): string {
return [upstreamURL, encodeURIComponent(id), encodeURIComponent(fileName)]
.join('/');
}
+
+export function submitPreferences(data: {
+ enableDark?: boolean,
+ locale?: string,
+ volume?: number,
+}) {
+ const formData = new URLSearchParams();
+ if (data.enableDark !== undefined && data.enableDark !== null) {
+ formData.append('enableDark', data.enableDark.toString());
+ }
+ if (data.locale !== undefined && data.locale !== null) {
+ formData.append('locale', data.locale);
+ }
+ if (data.volume !== undefined && data.volume !== null) {
+ formData.append('volume', data.volume.toString());
+ }
+
+ fetchJson('/api/changePreferences', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ body: formData,
+ });
+}