Skip to content
This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

Commit

Permalink
feat: ✨ Backup feature (no restore yet)
Browse files Browse the repository at this point in the history
backup all app settings to be resored later

#477 WIP
  • Loading branch information
Frontesque committed Sep 3, 2022
1 parent c74800d commit 3e131c2
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
1 change: 1 addition & 0 deletions NUXT/pages/mods/developer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<!-- Add New Key Button -->
<center>
<v-btn
rounded
@click="
addDialog = !addDialog;
selectedKey = null;
Expand Down
59 changes: 59 additions & 0 deletions NUXT/pages/mods/general.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<template>
<div class="mainContainer pt-1">
<!-- Language Picker -->
<v-card
flat
class="pb-5 background"
Expand All @@ -11,6 +12,25 @@
<language />
</v-card-text>
</v-card>

<!-- Backup -->
<v-card
flat
class="pb-5 background"
:class="$vuetify.theme.dark ? 'lighten-1' : 'darken-1'"
:style="{ borderRadius: `${roundTweak / 2}rem` }"
>
<v-card-title>{{ lang.backup }}</v-card-title>
<v-card-text>
<p>Backup or restore your application settings</p>
</v-card-text>
<v-card-actions>
<v-btn rounded color="primary darken-2" @click="registryBackup">{{ lang.backup }}</v-btn>
<v-btn rounded @click="registryRestore">{{ lang.restore }}</v-btn>
</v-card-actions>
</v-card>


</div>
</template>

Expand All @@ -34,6 +54,45 @@ export default {
const lang = this.$lang();
this.lang = lang.mods.general;
},
methods: {
download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
},
getRegistry() {
let keys = [];
const localStorageKeys = Object.keys(localStorage);
for (const i in localStorageKeys) {
const key = localStorageKeys[i];
const keyValue = localStorage.getItem(key);
keys.push({ key: key, value: keyValue });
}
return keys;
},
registryBackup() {
const file = JSON.stringify({
scheme: "VueTube Backup",
version: process.env.version,
channel: process.env.channel,
date: Date.now(),
registry: this.getRegistry()
});
this.download("vuetube-backup.json",file);
},
registryRestore() {
}
}
};
</script>

Expand Down
2 changes: 2 additions & 0 deletions NUXT/plugins/languages/english.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ module.exports = {
mods: {
general: {
language: "Language",
backup: "Backup",
restore: "Restore"
},
theme: {
normal: "Normal",
Expand Down

0 comments on commit 3e131c2

Please sign in to comment.