Skip to content

Commit 8ede7f6

Browse files
Support toggling of weekly report in settings of SPA prototype
1 parent 981d089 commit 8ede7f6

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

app/Http/Controllers/Api/SettingsController.php

+7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public function index(Request $request): JsonResponse
1717
->json([
1818
'language' => $apiKey->user->language,
1919
'theme' => $apiKey->user->theme,
20+
'weekly_report' => $apiKey->user->weekly_report,
2021
]);
2122
}
2223

@@ -25,6 +26,7 @@ public function store(Request $request): JsonResponse
2526
$request->validate([
2627
'language' => 'nullable|string|in:en,nl,dk,de,fr,pt,ru',
2728
'theme' => 'nullable|string|in:light,dark',
29+
'weekly_report' => 'nullable|boolean',
2830
]);
2931

3032
/** @var ApiKey $apiKey */
@@ -38,10 +40,15 @@ public function store(Request $request): JsonResponse
3840
$apiKey->user()->update(['theme' => $request->get('theme')]);
3941
}
4042

43+
if ($request->has('weekly_report')) {
44+
$apiKey->user()->update(['weekly_report' => $request->get('weekly_report')]);
45+
}
46+
4147
return response()
4248
->json([
4349
'language' => $apiKey->user->language,
4450
'theme' => $apiKey->user->theme,
51+
'weekly_report' => $apiKey->user->weekly_report,
4552
]);
4653
}
4754
}

resources/assets/js/prototype/screens/Settings/Preferences.vue

+15-1
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,27 @@ import Navigation from '../../components/Navigation.vue';
66
77
const language = ref('en');
88
const theme = ref('light');
9+
const weeklyReport = ref(false);
910
1011
const retrieve = () => {
1112
axios
1213
.get('/api/settings', { headers: { 'api-key': localStorage.getItem('api_key') } })
1314
.then(response => {
1415
language.value = response.data.language;
1516
theme.value = response.data.theme;
17+
weeklyReport.value = response.data.weekly_report;
1618
});
1719
};
1820
21+
const toggleWeeklyReport = () => {
22+
weeklyReport.value = !weeklyReport.value;
23+
24+
update();
25+
};
26+
1927
const update = () => {
2028
axios
21-
.post('/api/settings', { language: language.value, theme: theme.value }, { headers: { 'api-key': localStorage.getItem('api_key') } })
29+
.post('/api/settings', { language: language.value, theme: theme.value, weekly_report: weeklyReport.value }, { headers: { 'api-key': localStorage.getItem('api_key') } })
2230
.then(response => {
2331
// Done
2432
@@ -60,6 +68,12 @@ onMounted(() => retrieve());
6068
<option value="dark">Dark</option>
6169
</select>
6270
</div>
71+
<div>
72+
<div class="mb-2 text-sm dark:text-white">Weekly report</div>
73+
<button class="relative flex w-9 h-6 bg-gray-200 rounded-full" :class="{ 'bg-gray-900': weeklyReport }" @click="toggleWeeklyReport()">
74+
<span class="absolute top-0.5 left-0.5 w-5 h-5 bg-white rounded-full" :class="{ 'left-auto right-0.5': weeklyReport }"></span>
75+
</button>
76+
</div>
6377
</div>
6478
</div>
6579
</div>

0 commit comments

Comments
 (0)