From 34ce25cc1d8350a08804a6a15c4ed14411ec8f56 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Thu, 1 May 2025 01:45:46 +0200 Subject: [PATCH] refactor: :recycle: Finish rewrite and delete old settings backend --- app.vue | 10 +- bun.lock | 5 + components/form/switch.vue | 12 +- components/form/text.vue | 29 ++ .../category.vue | 2 +- components/preferences/code.vue | 64 --- .../developer.vue | 0 .../{preferences2 => preferences}/dialog.vue | 20 +- .../emojis/batch-dropdown.vue | 0 components/preferences/emojis/category.vue | 34 -- .../emojis/dropdown.vue | 0 components/preferences/emojis/emoji.vue | 144 ------ .../emojis/index.vue | 0 .../emojis/table.vue | 0 components/preferences/emojis/uploader.vue | 35 +- .../{preferences2 => preferences}/index.vue | 0 .../{preferences2 => preferences}/page.vue | 0 .../preferences.ts | 0 components/preferences/profile.ts | 63 +++ components/preferences/profile.vue | 185 ++++++++ components/preferences/profile/editor.vue | 419 ------------------ components/preferences/profile/fields.vue | 104 +++++ .../preferences/profile/image-uploader.vue | 6 +- components/preferences/select.vue | 46 -- .../{preferences2 => preferences}/stats.vue | 0 components/preferences/string.vue | 31 -- components/preferences/switch.vue | 31 -- .../{preferences2 => preferences}/types.ts | 0 .../types/base.vue | 0 .../types/boolean.vue | 0 .../types/code.vue | 0 .../types/multiselect.vue | 0 .../types/number.vue | 0 .../types/select.vue | 0 .../types/text.vue | 0 .../types/url.vue | 0 components/preferences2/emojis/uploader.vue | 290 ------------ components/profiles/tiny-card.vue | 2 +- components/sidebars/footer/footer-actions.vue | 12 +- components/sidebars/left-sidebar.vue | 7 - components/sidebars/sidebar.ts | 39 +- composables/Config.ts | 1 + composables/EventBus.ts | 1 + composables/Preference.ts | 2 +- layouts/app.vue | 2 +- nix/package.nix | 2 +- package.json | 1 + pages/preferences/account.vue | 51 --- pnpm-lock.yaml | 21 + settings.ts | 339 -------------- 50 files changed, 472 insertions(+), 1538 deletions(-) create mode 100644 components/form/text.vue rename components/{preferences2 => preferences}/category.vue (97%) delete mode 100644 components/preferences/code.vue rename components/{preferences2 => preferences}/developer.vue (100%) rename components/{preferences2 => preferences}/dialog.vue (92%) rename components/{preferences2 => preferences}/emojis/batch-dropdown.vue (100%) delete mode 100644 components/preferences/emojis/category.vue rename components/{preferences2 => preferences}/emojis/dropdown.vue (100%) delete mode 100644 components/preferences/emojis/emoji.vue rename components/{preferences2 => preferences}/emojis/index.vue (100%) rename components/{preferences2 => preferences}/emojis/table.vue (100%) rename components/{preferences2 => preferences}/index.vue (100%) rename components/{preferences2 => preferences}/page.vue (100%) rename components/{preferences2 => preferences}/preferences.ts (100%) create mode 100644 components/preferences/profile.ts create mode 100644 components/preferences/profile.vue delete mode 100644 components/preferences/profile/editor.vue create mode 100644 components/preferences/profile/fields.vue delete mode 100644 components/preferences/select.vue rename components/{preferences2 => preferences}/stats.vue (100%) delete mode 100644 components/preferences/string.vue delete mode 100644 components/preferences/switch.vue rename components/{preferences2 => preferences}/types.ts (100%) rename components/{preferences2 => preferences}/types/base.vue (100%) rename components/{preferences2 => preferences}/types/boolean.vue (100%) rename components/{preferences2 => preferences}/types/code.vue (100%) rename components/{preferences2 => preferences}/types/multiselect.vue (100%) rename components/{preferences2 => preferences}/types/number.vue (100%) rename components/{preferences2 => preferences}/types/select.vue (100%) rename components/{preferences2 => preferences}/types/text.vue (100%) rename components/{preferences2 => preferences}/types/url.vue (100%) delete mode 100644 components/preferences2/emojis/uploader.vue delete mode 100644 pages/preferences/account.vue delete mode 100644 settings.ts diff --git a/app.vue b/app.vue index 13f24c7..6933776 100644 --- a/app.vue +++ b/app.vue @@ -119,13 +119,13 @@ html.theme-changing * { box-shadow 1s ease !important; } -.slide-down-enter-active, -.slide-down-leave-active { +.slide-up-enter-active, +.slide-up-leave-active { transition: transform 0.3s ease; } -.slide-down-enter-from, -.slide-down-leave-to { - transform: translateY(-100%); +.slide-up-enter-from, +.slide-up-leave-to { + transform: translateY(100%); } diff --git a/bun.lock b/bun.lock index f064092..4984415 100644 --- a/bun.lock +++ b/bun.lock @@ -50,6 +50,7 @@ "vee-validate": "^4.15.0", "virtua": "^0.40.4", "vue": "^3.5.13", + "vue-draggable-plus": "^0.6.0", "vue-router": "^4.5.1", "vue-sonner": "^1.3.2", "zod": "^3.24.3", @@ -720,6 +721,8 @@ "@types/resolve": ["@types/resolve@1.20.2", "", {}, "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="], + "@types/sortablejs": ["@types/sortablejs@1.15.8", "", {}, "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg=="], + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], "@types/video.js": ["@types/video.js@7.3.58", "", {}, "sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ=="], @@ -2098,6 +2101,8 @@ "vue-devtools-stub": ["vue-devtools-stub@0.1.0", "", {}, "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ=="], + "vue-draggable-plus": ["vue-draggable-plus@0.6.0", "", { "dependencies": { "@types/sortablejs": "^1.15.8" } }, "sha512-G5TSfHrt9tX9EjdG49InoFJbt2NYk0h3kgjgKxkFWr3ulIUays0oFObr5KZ8qzD4+QnhtALiRwIqY6qul4egqw=="], + "vue-router": ["vue-router@4.5.1", "", { "dependencies": { "@vue/devtools-api": "^6.6.4" }, "peerDependencies": { "vue": "^3.2.0" } }, "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw=="], "vue-sonner": ["vue-sonner@1.3.2", "", {}, "sha512-UbZ48E9VIya3ToiRHAZUbodKute/z/M1iT8/3fU8zEbwBRE11AKuHikssv18LMk2gTTr6eMQT4qf6JoLHWuj/A=="], diff --git a/components/form/switch.vue b/components/form/switch.vue index 019307c..20ab220 100644 --- a/components/form/switch.vue +++ b/components/form/switch.vue @@ -5,9 +5,9 @@ {{ title }} - + {{ description }} - + @@ -19,7 +19,13 @@ diff --git a/components/preferences2/category.vue b/components/preferences/category.vue similarity index 97% rename from components/preferences2/category.vue rename to components/preferences/category.vue index 371741a..56aa2e1 100644 --- a/components/preferences2/category.vue +++ b/components/preferences/category.vue @@ -18,7 +18,7 @@ diff --git a/components/preferences2/developer.vue b/components/preferences/developer.vue similarity index 100% rename from components/preferences2/developer.vue rename to components/preferences/developer.vue diff --git a/components/preferences2/dialog.vue b/components/preferences/dialog.vue similarity index 92% rename from components/preferences2/dialog.vue rename to components/preferences/dialog.vue index 6b324d7..92a182e 100644 --- a/components/preferences2/dialog.vue +++ b/components/preferences/dialog.vue @@ -25,16 +25,17 @@ import Developer from "./developer.vue"; import Emojis from "./emojis/index.vue"; import Page from "./page.vue"; import { preferences } from "./preferences"; +import Profile from "./profile.vue"; import Stats from "./stats.vue"; const pages = Object.values(preferences) .map((p) => p.options.category) .filter((c) => c !== undefined) .map((c) => c.split("/")[0] as string) - .concat(["Account", "Emojis", "Roles", "Developer", "About"]) + .concat(["Account", "Emojis", "Developer", "About"]) // Remove duplicates .filter((c, i, a) => a.indexOf(c) === i); -const extraPages = ["Account", "Emojis", "Roles", "Developer", "About"]; +const extraPages = ["Account", "Emojis", "Developer", "About"]; const icons: Record = { Account: UserIcon, @@ -75,11 +76,17 @@ const { account: author3 } = useAccountFromAcct( client, "lina@social.lysand.org", ); + +const open = ref(false); + +useListen("preferences:open", () => { + open.value = true; +});