aboutsummaryrefslogtreecommitdiff
path: root/src-vue/src/views/SettingsView.vue
diff options
context:
space:
mode:
authorGeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com>2024-01-21 13:02:43 +0100
committerGitHub <noreply@github.com>2024-01-21 13:02:43 +0100
commitdc2a6d7bcee85481f3e53daffdb00436af01c309 (patch)
tree722ea33161735cc2efd1f94b51df88b939ff6d19 /src-vue/src/views/SettingsView.vue
parent4d930dc7f38ebe4874e007628ff9b733d7b64e5b (diff)
downloadFlightCore-dc2a6d7bcee85481f3e53daffdb00436af01c309.tar.gz
FlightCore-dc2a6d7bcee85481f3e53daffdb00436af01c309.zip
feat: Add option to clone existing profile (#761)
* add dev button to refetch profiles * add dialog box with a table of all profiles * add button to delete non default profiles to dialog box * add button to clone profile to dialog box * style: Add trailing comma * docs: Add doc comment explaining function * fix: Remove leftover testing code * fix: Delete duplicate function registration * chore: Sort Tauri function registrations alphabetically --------- Co-authored-by: Jan200101 <sentrycraft123@gmail.com>
Diffstat (limited to 'src-vue/src/views/SettingsView.vue')
-rw-r--r--src-vue/src/views/SettingsView.vue32
1 files changed, 32 insertions, 0 deletions
diff --git a/src-vue/src/views/SettingsView.vue b/src-vue/src/views/SettingsView.vue
index 70bffbc5..16b894d5 100644
--- a/src-vue/src/views/SettingsView.vue
+++ b/src-vue/src/views/SettingsView.vue
@@ -21,6 +21,9 @@
</el-button>
</template>
</el-popconfirm>
+ <el-button @click="cloneProfileDialog(scope.row.name)">
+ {{ $t('settings.profile.dialog.clone') }}
+ </el-button>
</template>
</el-table-column>
</el-table>
@@ -140,6 +143,7 @@ import LanguageSelector from "../components/LanguageSelector.vue";
const persistentStore = new Store('flight-core-settings.json');
import { open } from '@tauri-apps/api/shell';
import { i18n } from '../main';
+import { ElMessageBox } from 'element-plus'
export default defineComponent({
name: "SettingsView",
@@ -274,6 +278,34 @@ export default defineComponent({
showErrorNotification(error);
});
},
+ async cloneProfileDialog(profile: string) {
+ ElMessageBox.prompt(
+ i18n.global.tc("settings.profile.dialog.new_profile_name"),
+ i18n.global.tc("settings.profile.dialog.title"),
+ {
+ confirmButtonText: i18n.global.tc("generic.confirm"),
+ cancelButtonText: i18n.global.tc("generic.cancel"),
+ }
+ ).then(async ({ value }) => {
+ await this.cloneProfile(profile, value);
+ }).catch(() => {
+ // Nothing to do here
+ })
+ },
+ async cloneProfile(old_profile: string, new_profile: string) {
+ let store = this.$store;
+ await invoke("clone_profile", {
+ gameInstall: store.state.game_install,
+ oldProfile: old_profile,
+ newProfile: new_profile
+ }).then(async (message) => {
+ store.commit('fetchProfiles');
+ showNotification('Success');
+ }).catch((error) => {
+ console.error(error);
+ showErrorNotification(error);
+ });
+ },
async deleteProfile(profile: string) {
let store = this.$store;
await invoke("delete_profile", {