Skip to content

Commit a1929bd

Browse files
committed
feat: implement remove secret #2
Signed-off-by: seven <[email protected]>
1 parent 0a6bbbe commit a1929bd

File tree

6 files changed

+39
-6
lines changed

6 files changed

+39
-6
lines changed

public/tauri.svg

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/lang/enUS.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,8 @@ export const enUS = {
7272
usernameRequired: 'Username is required',
7373
passwordRequired: 'Password is required',
7474
},
75+
operations: {
76+
remove: 'Remove',
77+
},
7578
},
7679
};

src/lang/zhCN.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,8 @@ export const zhCN = {
7272
usernameRequired: '请输入用户名',
7373
passwordRequired: '请输入密码',
7474
},
75+
operations: {
76+
remove: '删除',
77+
},
7578
},
7679
};

src/main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
BiCheckLg,
2222
GiHouseKeys,
2323
FaTerminal,
24+
MdMorehoriz,
2425
} from 'oh-vue-icons/icons';
2526

2627
const app = createApp(App);
@@ -39,6 +40,7 @@ addIcons(
3940
CoFolder,
4041
GiHouseKeys,
4142
FaTerminal,
43+
MdMorehoriz,
4244
);
4345
app.component('VIcon', OhVueIcon);
4446

src/store/secretStore.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,9 @@ export const useSecretStore = defineStore('secretStore', {
3232
this.secrets[index] = secret;
3333
}
3434
},
35+
removeSecret(secret: Secret) {
36+
const index = this.secrets.findIndex(s => s.id === secret.id);
37+
this.secrets.splice(index, 1);
38+
},
3539
},
3640
});

src/views/secret/components/key-list.vue

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@
77
hoverable
88
@click="editSecret(secret)"
99
>
10+
<template #header-extra>
11+
<div class="operation" @click.stop="">
12+
<n-dropdown
13+
trigger="click"
14+
:options="options"
15+
@select="(args: number) => handleSelect(args, secret)"
16+
>
17+
<n-icon size="20">
18+
<v-icon name="md-morehoriz" />
19+
</n-icon>
20+
</n-dropdown>
21+
</div>
22+
</template>
1023
</n-card>
1124
<new-key-dialog ref="editKeyDialogRef" />
1225
</div>
@@ -15,7 +28,9 @@
1528
<script setup lang="ts">
1629
import { Secret, useSecretStore } from '../../../store';
1730
import NewKeyDialog from './new-key-dialog.vue';
31+
import { useLang } from '../../../lang';
1832
33+
const lang = useLang();
1934
const secretStore = useSecretStore();
2035
2136
const { secrets } = toRefs(secretStore);
@@ -24,6 +39,17 @@ const editKeyDialogRef = ref();
2439
const editSecret = (secret: Secret) => {
2540
editKeyDialogRef.value.showMedal(secret);
2641
};
42+
const options = reactive([{ key: 1, label: lang.t('secret.operations.remove') }]);
43+
const handleSelect = (key: number, secret: Secret) => {
44+
switch (key) {
45+
case 1:
46+
deleteSecret(secret);
47+
break;
48+
}
49+
};
50+
const deleteSecret = (secret: Secret) => {
51+
secretStore.removeSecret(secret);
52+
};
2753
</script>
2854

2955
<style lang="scss" scoped>
@@ -33,6 +59,7 @@ const editSecret = (secret: Secret) => {
3359
gap: 16px;
3460
padding: 16px;
3561
}
62+
3663
.secret-list .n-card:hover {
3764
cursor: pointer;
3865
}

0 commit comments

Comments
 (0)