-
+
Whitelisted Users
diff --git a/pages/settings/appearance.tsx b/pages/settings/appearance.tsx
index 4f333bcd..2ddde66f 100644
--- a/pages/settings/appearance.tsx
+++ b/pages/settings/appearance.tsx
@@ -8,7 +8,7 @@ export default function Appearance() {
return (
- Select Theme
+ Select Theme
-
+
Confirm Your Password
diff --git a/pages/settings/password.tsx b/pages/settings/password.tsx
index d54a9b0e..90b8abfe 100644
--- a/pages/settings/password.tsx
+++ b/pages/settings/password.tsx
@@ -51,7 +51,7 @@ export default function Password() {
should be at least 8 characters.
-
New Password
+
New Password
-
- Confirm New Password
-
+
Confirm New Password
(Sort.DateNewestFirst);
@@ -81,6 +81,25 @@ export default function Index() {
setRenameTag(false);
};
+ const remove = async () => {
+ setSubmitLoader(true);
+
+ const load = toast.loading("Applying...");
+
+ let response;
+
+ if (activeTag?.id) response = await removeTag(activeTag?.id);
+
+ toast.dismiss(load);
+
+ if (response?.ok) {
+ toast.success("Tag Removed.");
+ router.push("/links");
+ } else toast.error(response?.data as string);
+ setSubmitLoader(false);
+ setRenameTag(false);
+ };
+
return (
@@ -153,6 +172,13 @@ export default function Index() {
setExpandDropdown(false);
},
},
+ {
+ name: "Remove Tag",
+ onClick: () => {
+ remove();
+ setExpandDropdown(false);
+ },
+ },
]}
onClickOutside={(e: Event) => {
const target = e.target as HTMLInputElement;
diff --git a/store/tags.ts b/store/tags.ts
index 26552bf9..a27b8599 100644
--- a/store/tags.ts
+++ b/store/tags.ts
@@ -10,6 +10,7 @@ type TagStore = {
tags: Tag[];
setTags: () => void;
updateTag: (tag: Tag) => Promise;
+ removeTag: (tagId: number) => Promise;
};
const useTagStore = create()((set) => ({
@@ -42,6 +43,20 @@ const useTagStore = create()((set) => ({
return { ok: response.ok, data: data.response };
},
+ removeTag: async (tagId) => {
+ const response = await fetch(`/api/v1/tags/${tagId}`, {
+ method: "DELETE",
+ });
+
+ if (response.ok) {
+ set((state) => ({
+ tags: state.tags.filter((e) => e.id !== tagId),
+ }));
+ }
+
+ const data = await response.json();
+ return { ok: response.ok, data: data.response };
+ },
}));
export default useTagStore;