- 历史记录 清空
+
+ 历史记录
+ 清空
-
+
{{ item.content }}
-
+
{{ item.content }}
@@ -74,33 +109,19 @@
-
- 预览:
-
-
-
+ 预览:
+
-
-
- 帮助:
-
-
- Ctrl + Shift + C 快速复制 并关闭工具
-
-
- Ctrl + Shift + R 重置内容
-
-
- Ctrl + P 快速打开预览,关闭预览
-
-
- Tab 快速切换输入框
-
+ 帮助:
+ Ctrl + Shift + C 快速复制 并关闭工具
+ Ctrl + Shift + R 重置内容
+ Ctrl + P 快速打开预览,关闭预览
+ Tab 快速切换输入框
历史记录最多保存5条历史,单击复制信息内容,双击将对应信息内容设置到表单,方便二次编辑
@@ -109,27 +130,27 @@
diff --git a/src/components/SettingsView.vue b/src/components/SettingsView.vue
new file mode 100644
index 0000000..26e7fcf
--- /dev/null
+++ b/src/components/SettingsView.vue
@@ -0,0 +1,36 @@
+
+
+
+
+ 设置:
+
+ 开启emoji
+
+
+ 使用代码emoji
+
+
+
+
+
+
+
+
+
diff --git a/src/components/home.vue b/src/components/home.vue
index c771494..2c6d302 100644
--- a/src/components/home.vue
+++ b/src/components/home.vue
@@ -4,13 +4,7 @@
-
- Emoji
-
+ 设置
帮助
预览
重置内容
@@ -52,10 +46,10 @@
size="large"
:options="emojiOptions"
filterable
- :disabled="!ISEmoji"
+ :disabled="!settingsStore.settings.value.isEmoji"
ref="searchEmoji"
:filter="useFilterEmoji"
- :show-on-focus="true"
+ :show="settingsStore.settings.value.isEmojiMode ? true : undefined"
@update:value="settingsStore.settings.value.isEmojiMode && handleCopy()"
>
@@ -140,18 +134,23 @@
+
diff --git a/src/components/SettingsView.vue b/src/components/SettingsView.vue
index 5ee1ee1..3d8c432 100644
--- a/src/components/SettingsView.vue
+++ b/src/components/SettingsView.vue
@@ -33,11 +33,9 @@
diff --git a/src/components/home.vue b/src/components/home.vue
index b1302bc..b4e0ba1 100644
--- a/src/components/home.vue
+++ b/src/components/home.vue
@@ -5,7 +5,7 @@
设置
- 帮助
+ 帮助
预览
重置内容
@@ -19,7 +19,7 @@
-
+
-
+
-
+
-
+
-
-
-
- 帮助:
- Ctrl + Shift + C 快速复制 并关闭工具
- Ctrl + Shift + R 重置内容
- Ctrl + P 快速打开预览,关闭预览
- Tab 快速切换输入框
-
- 历史记录最多保存5条历史,单击复制信息内容,双击将对应信息内容设置到表单,方便二次编辑
-
-
-
-
+
+
+
diff --git a/src/components/Help.vue b/src/components/Help.vue
index 98b3f60..cae0358 100644
--- a/src/components/Help.vue
+++ b/src/components/Help.vue
@@ -47,7 +47,7 @@ const helpContent: {
}
],
"gitemoji关键字": [
- { commnet: "在该关键字下支持emoji中文或英文搜索" },
+ { commnet: "在该关键字下可直接使用英文或中文(首字母)搜索emoji" },
{ commnet: "选中emoji后按下回车可以快速复制" }
]
}
diff --git a/src/components/home.vue b/src/components/home.vue
index b4e0ba1..db97c06 100644
--- a/src/components/home.vue
+++ b/src/components/home.vue
@@ -5,6 +5,7 @@
设置
+ 自定义emoji
帮助
预览
重置内容
@@ -44,7 +45,7 @@
v-model:value="emoji"
placeholder="emoji"
size="large"
- :options="emojiOptions"
+ :options="emojisStore.emojiOptions.value"
filterable
:disabled="!settingsStore.settings.value.isEmoji"
ref="searchEmoji"
@@ -122,13 +123,13 @@
+
-
-
diff --git a/src/store/emojis.ts b/src/store/emojis.ts
index 673967e..daf9d97 100644
--- a/src/store/emojis.ts
+++ b/src/store/emojis.ts
@@ -2,6 +2,14 @@ import { useSearchTxtArr } from "@/composables/useSearch";
import { type RawEmoji, rawEmojis } from "@/data";
import EmojiLabel from "@/components/EmojiLabel.vue";
+const CUSTOM_EMOJIS_KEY = "CUSTOM_EMOJIS_STORE";
+
+const readCustomEmojis = () => {
+ const customEmoji: RawEmoji[] = utools.dbStorage.getItem(CUSTOM_EMOJIS_KEY);
+ if (customEmoji === null) return [];
+ return customEmoji;
+};
+
const toEmojiOptions = (item: RawEmoji) => ({
...item,
searchTxtArr: useSearchTxtArr(item),
@@ -17,27 +25,24 @@ const toEmojiOptions = (item: RawEmoji) => ({
});
export const useEmojisStore = createGlobalState(() => {
- const CUSTOM_EMOJIS_KEY = "CUSTOM_EMOJIS_STORE";
-
- const readCustomEmojis = () => {
- const customEmoji: RawEmoji[] = utools.dbStorage.getItem(CUSTOM_EMOJIS_KEY);
- if (customEmoji === null) return [];
- return customEmoji;
- };
- rawEmojis.push(...readCustomEmojis());
- let emojiOptions = ref(rawEmojis.map(toEmojiOptions));
+ const rawEmojiOptions = rawEmojis.map(toEmojiOptions);
+ let customEmojis = readCustomEmojis();
+ let emojiOptions = ref(
+ rawEmojiOptions.concat(...customEmojis.map(toEmojiOptions))
+ );
/**
* 除了增加新的emoji列表外,相同的emoji会覆盖已有的
- * @param coustomEmojis
+ * @param customEmojis
*/
- const updateEmojis = (coustomEmojis: RawEmoji[]) => {
+ const updateEmojis = (customEmojis: RawEmoji[]) => {
type EmojiOptionsType = ReturnType;
let newEmojis: EmojiOptionsType[] = [];
let result: number;
- // todo: 已有的自定义emoji再保存会重新参与遍历,应该排除上一次自定义emoji
- coustomEmojis.forEach((userEmoji) => {
+ emojiOptions.value = rawEmojis.map(toEmojiOptions);
+
+ customEmojis.forEach((userEmoji) => {
result = emojiOptions.value.findIndex(
(emoji) => emoji.name === userEmoji.name
);
@@ -51,6 +56,7 @@ export const useEmojisStore = createGlobalState(() => {
// 新的emoji会暂存在newEmojis,等自定义的全部遍历完在一起push
else newEmojis.push(toEmojiOptions(userEmoji));
});
+
emojiOptions.value.push(...newEmojis);
};
@@ -58,5 +64,5 @@ export const useEmojisStore = createGlobalState(() => {
utools.dbStorage.setItem(CUSTOM_EMOJIS_KEY, customEmoji);
};
- return { emojiOptions, updateEmojis, readCustomEmojis, saveCustomEmojis };
+ return { emojiOptions, updateEmojis, customEmojis, saveCustomEmojis };
});
From e4a5c84ae58f666a1b1b9f07e020bfee128e4197 Mon Sep 17 00:00:00 2001
From: xyeluo
Date: Fri, 6 Oct 2023 23:49:12 +0800
Subject: [PATCH 30/36] =?UTF-8?q?feat:=20=F0=9F=9A=B8=20=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E5=B8=AE=E5=8A=A9=E8=AF=B4=E6=98=8E=EF=BC=8C=E7=A7=BB=E9=99=A4?=
=?UTF-8?q?=E9=83=A8=E5=88=86emoji?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/CustomEmoji.vue | 21 ++++++----
src/components/Help.vue | 76 +++++++++++++++++++++++++++++-----
src/data/rawEmojis.ts | 48 ---------------------
src/store/emojis.ts | 71 ++++++++++++++++++++-----------
4 files changed, 125 insertions(+), 91 deletions(-)
diff --git a/src/components/CustomEmoji.vue b/src/components/CustomEmoji.vue
index 39b1a50..1416414 100644
--- a/src/components/CustomEmoji.vue
+++ b/src/components/CustomEmoji.vue
@@ -2,11 +2,17 @@
-
- 自定义emoji:
+
+ 自定义emoji:
保存
-
-
+
+
@@ -21,9 +27,9 @@ isOpenWindow.value = true
defineExpose({ switchCustom })
const { error, success } = useMessage()
-const { updateEmojis, customEmojis, saveCustomEmojis } = useEmojisStore()
+const { updateEmojis, customEmojis } = useEmojisStore()
-let userEmojis = ref(JSON.stringify(customEmojis, undefined, 2))
+let userEmojis = ref(customEmojis.value.length === 0 ? "" : JSON.stringify(customEmojis.value, undefined, 2))
let inputStatus = ref<"success" | "error">("success")
const customEorror = (str: string) => {
@@ -58,10 +64,11 @@ const validEmojiKey = (emojisData: RawEmoji[]) => {
const saveEmojisData = () => {
try {
+ if (userEmojis.value === "") return updateEmojis([])
let emojisData: RawEmoji[] = JSON.parse(userEmojis.value)
+
if (!validEmojiKey(emojisData)) return
updateEmojis(emojisData)
- saveCustomEmojis(emojisData)
customSuccess("保存成功")
} catch (err) {
customEorror(`[JSON Error]:${err}`)
diff --git a/src/components/Help.vue b/src/components/Help.vue
index cae0358..3e382b1 100644
--- a/src/components/Help.vue
+++ b/src/components/Help.vue
@@ -10,26 +10,29 @@
{{ contents[0] }}:
-
+
-
-
- {{ item.code }}
-
- {{ item.commnet }}
-
+ -
+
+
+ {{ item.code }}
+
+
+
+
-
+
@@ -63,4 +94,27 @@ const helpContent: {
.help-content {
margin-left: var(--space);
}
+ul,
+li {
+ margin: 0;
+ padding-left: 3px;
+ list-style-position: inside;
+}
+:deep(b) {
+ font-weight: 400;
+ padding: 0.01em 0.35em 0.2em 0.33em;
+ border-radius: 3px;
+}
+@media (prefers-color-scheme: dark) {
+ :deep(b) {
+ background-color: rgba(255, 255, 255, 0.2);
+ color: rgba(255, 255, 255, 0.82);
+ }
+}
+@media (prefers-color-scheme: light) {
+ :deep(b) {
+ background-color: rgb(244, 244, 248);
+ color: rgb(65, 68, 71);
+ }
+}
diff --git a/src/data/rawEmojis.ts b/src/data/rawEmojis.ts
index 33202d9..50fca44 100644
--- a/src/data/rawEmojis.ts
+++ b/src/data/rawEmojis.ts
@@ -77,36 +77,6 @@ export const rawEmojis: RawEmoji[] = [
"pinyin": "xiu fu an quan wen ti",
"emoji": "🔒",
},
- {
- "name": "apple",
- "description": "修复在苹果系统上的问题",
- "pinyin": "xiu fu zai ping guo xi tong shang de wen ti",
- "emoji": "🍎",
- },
- {
- "name": "penguin",
- "description": "修复在 Linux 系统上的问题",
- "pinyin": "xiu fu zai Linux xi tong shang de wen ti",
- "emoji": "🐧",
- },
- {
- "name": "checkered_flag",
- "description": "修复在 Windows 系统上的问题",
- "pinyin": "xiu fu zai Windows xi tong shang de wen ti",
- "emoji": "🏁",
- },
- {
- "name": "robot",
- "description": "修复在安卓系统上的问题",
- "pinyin": "xiu fu zai an zhuo xi tong shang de wen ti",
- "emoji": "🤖",
- },
- {
- "name": "green_apple",
- "description": "修复在 iOS 系统上的问题",
- "pinyin": "xiu fu zai iOS xi tong shang de wen ti",
- "emoji": "🍏",
- },
{
"name": "bookmark",
"description": "发布 / 版本标签",
@@ -167,12 +137,6 @@ export const rawEmojis: RawEmoji[] = [
"pinyin": "dai ma chong gou",
"emoji": "♻️",
},
- {
- "name": "whale",
- "description": "Docker 容器相关",
- "pinyin": "Docker rong qi xiang guan",
- "emoji": "🐳",
- },
{
"name": "heavy_plus_sign",
"description": "添加依赖",
@@ -257,12 +221,6 @@ export const rawEmojis: RawEmoji[] = [
"pinyin": "tian jia huo zhe geng xin jing tai zi yuan",
"emoji": "🍱",
},
- {
- "name": "ok_hand",
- "description": "代码审核后更新代码",
- "pinyin": "dai ma shen he hou geng xin dai ma",
- "emoji": "👌",
- },
{
"name": "wheelchair",
"description": "改进可访问性",
@@ -371,12 +329,6 @@ export const rawEmojis: RawEmoji[] = [
"pinyin": "gai jin sou suo yin qing you hua",
"emoji": "🔍",
},
- {
- "name": "wheel_of_dharma",
- "description": "Kubernetes 相关的工作",
- "pinyin": "Kubernetes xiang guan de gong zuo",
- "emoji": "☸️",
- },
{
"name": "label",
"description": "添加或者更新类型(Flow, TypeScript)",
diff --git a/src/store/emojis.ts b/src/store/emojis.ts
index daf9d97..3a5b748 100644
--- a/src/store/emojis.ts
+++ b/src/store/emojis.ts
@@ -6,7 +6,7 @@ const CUSTOM_EMOJIS_KEY = "CUSTOM_EMOJIS_STORE";
const readCustomEmojis = () => {
const customEmoji: RawEmoji[] = utools.dbStorage.getItem(CUSTOM_EMOJIS_KEY);
- if (customEmoji === null) return [];
+ if (customEmoji === null || customEmoji.length === 0) return [];
return customEmoji;
};
@@ -24,45 +24,66 @@ const toEmojiOptions = (item: RawEmoji) => ({
})
});
+/**
+ * 对自定义emoji数组的每个对象比较,name相同,后面覆盖前面
+ * @param arr 自定义emoji数组对象
+ * @returns
+ */
+const compareArrays = (arr: RawEmoji[]) => {
+ for (let i = 0; i < arr.length - 1; i++) {
+ for (let j = i + 1; j < arr.length; j++) {
+ if (arr[i].name === arr[j].name) {
+ arr[i] = {
+ ...arr[i],
+ ...arr[j]
+ };
+ arr.splice(j, 1);
+ }
+ }
+ }
+ return arr;
+};
+
+type EmojiOptionsType = ReturnType;
+
export const useEmojisStore = createGlobalState(() => {
- const rawEmojiOptions = rawEmojis.map(toEmojiOptions);
+ let newCustomEmojis = ref(readCustomEmojis());
+
+ const saveCustomEmojis = (customEmoji: RawEmoji[]) => {
+ utools.dbStorage.setItem(CUSTOM_EMOJIS_KEY, customEmoji);
+ };
- let customEmojis = readCustomEmojis();
- let emojiOptions = ref(
- rawEmojiOptions.concat(...customEmojis.map(toEmojiOptions))
- );
- /**
- * 除了增加新的emoji列表外,相同的emoji会覆盖已有的
- * @param customEmojis
- */
const updateEmojis = (customEmojis: RawEmoji[]) => {
- type EmojiOptionsType = ReturnType;
+ newCustomEmojis.value = compareArrays(customEmojis);
+ saveCustomEmojis(customEmojis);
+ };
+
+ let emojiOptions = computed(() => {
let newEmojis: EmojiOptionsType[] = [];
let result: number;
- emojiOptions.value = rawEmojis.map(toEmojiOptions);
+ let emojiOptions = rawEmojis.map(toEmojiOptions);
- customEmojis.forEach((userEmoji) => {
- result = emojiOptions.value.findIndex(
- (emoji) => emoji.name === userEmoji.name
- );
+ newCustomEmojis.value.forEach((userEmoji) => {
+ result = emojiOptions.findIndex((emoji) => emoji.name === userEmoji.name);
if (result !== -1) {
// 如果存在相同的name,自定义的会覆盖已有的
- emojiOptions.value[result] = toEmojiOptions({
- ...emojiOptions.value[result],
+ emojiOptions[result] = toEmojiOptions({
+ ...emojiOptions[result],
...userEmoji
});
}
// 新的emoji会暂存在newEmojis,等自定义的全部遍历完在一起push
else newEmojis.push(toEmojiOptions(userEmoji));
});
+ emojiOptions.push(...newEmojis);
+ return emojiOptions;
+ });
- emojiOptions.value.push(...newEmojis);
+ return {
+ emojiOptions,
+ updateEmojis,
+ customEmojis: newCustomEmojis,
+ saveCustomEmojis
};
-
- const saveCustomEmojis = (customEmoji: RawEmoji[]) => {
- utools.dbStorage.setItem(CUSTOM_EMOJIS_KEY, customEmoji);
- };
-
- return { emojiOptions, updateEmojis, customEmojis, saveCustomEmojis };
});
From 8e89b57b33bb4b6dc561d4ac2118655dfe9abd61 Mon Sep 17 00:00:00 2001
From: xyeluo
Date: Sat, 7 Oct 2023 15:02:33 +0800
Subject: [PATCH 31/36] =?UTF-8?q?feat:=20=F0=9F=9A=B8=20=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 自定义emoji可省略`emoji`键
- 首次通过`gitc*`关键字进入时`简短描述`输入框自动获取焦点
---
src/components/CustomEmoji.vue | 11 +++++++----
src/components/Help.vue | 9 ++++++---
src/components/home.vue | 12 ++++++++----
src/composables/usePluginEnter.ts | 7 +++++++
src/composables/useSearch.ts | 26 ++++++++++++++------------
src/store/emojis.ts | 11 +++++------
src/store/settings.ts | 4 ++--
7 files changed, 49 insertions(+), 31 deletions(-)
diff --git a/src/components/CustomEmoji.vue b/src/components/CustomEmoji.vue
index 1416414..0c7b650 100644
--- a/src/components/CustomEmoji.vue
+++ b/src/components/CustomEmoji.vue
@@ -23,7 +23,6 @@ import { type RawEmoji } from "@/data"
import { useEmojisStore } from "@/store"
let { isOpenWindow, switchWindow: switchCustom } = useWindowHandle()
-isOpenWindow.value = true
defineExpose({ switchCustom })
const { error, success } = useMessage()
@@ -40,18 +39,22 @@ const customSuccess = (str: string) => {
success(str)
inputStatus.value = "success"
}
-
+watch(isOpenWindow, (nVal) => {
+ if (nVal) {
+ inputStatus.value = "success"
+ }
+})
/**
* 验证自定义emoji的每个对象是否存在特定key
* @param emojisData
* @returns boolean 每个对象都存在keys时才返回true
*/
const validEmojiKey = (emojisData: RawEmoji[]) => {
- const keys = ["name", "emoji"]
+ const keys = ["name"]
return !emojisData.some((emojiItem) => {
let flag = emojiItem.hasOwnProperty(keys[0]) ? false : keys[0]
- flag = flag === false ? (emojiItem.hasOwnProperty(keys[1]) ? false : keys[1]) : flag
+ // flag = flag === false ? (emojiItem.hasOwnProperty(keys[1]) ? false : keys[1]) : flag
if (keys.includes(flag as string)) {
// 不存在flag键,终止遍历并返回true
diff --git a/src/components/Help.vue b/src/components/Help.vue
index 3e382b1..dca3454 100644
--- a/src/components/Help.vue
+++ b/src/components/Help.vue
@@ -29,7 +29,6 @@