-
+
@@ -8,12 +8,10 @@
import { RolePermission } from "@versia/client/schemas";
import Table from "./table.vue";
-const permissions = usePermissions();
+const authStore = useAuthStore();
const canUpload = computed(
() =>
- permissions.value.includes(RolePermission.ManageOwnEmojis) ||
- permissions.value.includes(RolePermission.ManageEmojis),
+ authStore.permissions.includes(RolePermission.ManageOwnEmojis) ||
+ authStore.permissions.includes(RolePermission.ManageEmojis),
);
-
-const emojis = computed(() => identity.value?.emojis ?? []);
diff --git a/app/components/preferences/emojis/uploader.vue b/app/components/preferences/emojis/uploader.vue
index 5734893..ca12ad5 100644
--- a/app/components/preferences/emojis/uploader.vue
+++ b/app/components/preferences/emojis/uploader.vue
@@ -189,8 +189,10 @@ import { Textarea } from "~/components/ui/textarea";
import * as m from "~~/paraglide/messages.js";
const open = ref(false);
-const permissions = usePermissions();
-const hasEmojiAdmin = permissions.value.includes(RolePermission.ManageEmojis);
+const authStore = useAuthStore();
+const hasEmojiAdmin = authStore.permissions.includes(
+ RolePermission.ManageEmojis,
+);
const createObjectURL = URL.createObjectURL;
const formSchema = toTypedSchema(
@@ -202,11 +204,11 @@ const formSchema = toTypedSchema(
.refine(
(v) =>
v.size <=
- (identity.value?.instance.configuration.emojis
+ (authStore.instance?.configuration.emojis
.emoji_size_limit ?? Number.POSITIVE_INFINITY),
m.orange_weird_parakeet_hug({
count:
- identity.value?.instance.configuration.emojis
+ authStore.instance?.configuration.emojis
.emoji_size_limit ?? Number.POSITIVE_INFINITY,
}),
),
@@ -214,11 +216,11 @@ const formSchema = toTypedSchema(
.string()
.min(1)
.max(
- identity.value?.instance.configuration.emojis
+ authStore.instance?.configuration.emojis
.max_shortcode_characters ?? Number.POSITIVE_INFINITY,
m.solid_inclusive_owl_hug({
count:
- identity.value?.instance.configuration.emojis
+ authStore.instance?.configuration.emojis
.max_shortcode_characters ??
Number.POSITIVE_INFINITY,
}),
@@ -237,11 +239,11 @@ const formSchema = toTypedSchema(
alt: z
.string()
.max(
- identity.value?.instance.configuration.emojis
+ authStore.instance?.configuration.emojis
.max_description_characters ?? Number.POSITIVE_INFINITY,
m.key_ago_hound_emerge({
count:
- identity.value?.instance.configuration.emojis
+ authStore.instance?.configuration.emojis
.max_description_characters ??
Number.POSITIVE_INFINITY,
}),
@@ -254,14 +256,14 @@ const { isSubmitting, handleSubmit, values, setFieldValue } = useForm({
});
const submit = handleSubmit(async (values) => {
- if (!identity.value) {
+ if (!authStore.isSignedIn) {
return;
}
const id = toast.loading(m.factual_gray_mouse_believe());
try {
- const { data } = await client.value.uploadEmoji(
+ const { data } = await authStore.client.uploadEmoji(
values.shortcode,
values.image,
{
@@ -274,7 +276,10 @@ const submit = handleSubmit(async (values) => {
toast.dismiss(id);
toast.success(m.cool_trite_gull_quiz());
- identity.value.emojis = [...identity.value.emojis, data];
+ authStore.updateActiveIdentity({
+ emojis: [...authStore.emojis, data],
+ });
+
open.value = false;
} catch {
toast.dismiss(id);
diff --git a/app/components/preferences/profile.ts b/app/components/preferences/profile.ts
index 277e525..a7b3f3f 100644
--- a/app/components/preferences/profile.ts
+++ b/app/components/preferences/profile.ts
@@ -1,10 +1,11 @@
import { toTypedSchema } from "@vee-validate/zod";
+import type { Instance } from "@versia/client/schemas";
import { z } from "zod";
import * as m from "~~/paraglide/messages.js";
const characterRegex = new RegExp(/^[a-z0-9_-]+$/);
-export const formSchema = (identity: Identity) =>
+export const formSchema = (instance: z.infer
) =>
toTypedSchema(
z.strictObject({
banner: z
@@ -12,11 +13,10 @@ export const formSchema = (identity: Identity) =>
.refine(
(v) =>
v.size <=
- (identity.instance.configuration.accounts
- .header_limit ?? Number.POSITIVE_INFINITY),
+ (instance.configuration.accounts.header_limit ??
+ Number.POSITIVE_INFINITY),
m.civil_icy_ant_mend({
- size: identity.instance.configuration.accounts
- .header_limit,
+ size: instance.configuration.accounts.header_limit,
}),
)
.optional(),
@@ -25,11 +25,10 @@ export const formSchema = (identity: Identity) =>
.refine(
(v) =>
v.size <=
- (identity.instance.configuration.accounts
- .avatar_limit ?? Number.POSITIVE_INFINITY),
+ (instance.configuration.accounts.avatar_limit ??
+ Number.POSITIVE_INFINITY),
m.zippy_caring_raven_edit({
- size: identity.instance.configuration.accounts
- .avatar_limit,
+ size: instance.configuration.accounts.avatar_limit,
}),
)
.or(z.string().url())
@@ -37,22 +36,15 @@ export const formSchema = (identity: Identity) =>
name: z
.string()
.max(
- identity.instance.configuration.accounts
- .max_displayname_characters,
+ instance.configuration.accounts.max_displayname_characters,
),
username: z
.string()
.regex(characterRegex, m.still_upper_otter_dine())
- .max(
- identity.instance.configuration.accounts
- .max_username_characters,
- ),
+ .max(instance.configuration.accounts.max_username_characters),
bio: z
.string()
- .max(
- identity.instance.configuration.accounts
- .max_note_characters,
- ),
+ .max(instance.configuration.accounts.max_note_characters),
bot: z.boolean().default(false),
locked: z.boolean().default(false),
discoverable: z.boolean().default(true),
diff --git a/app/components/preferences/profile.vue b/app/components/preferences/profile.vue
index 58762b1..8098bf4 100644
--- a/app/components/preferences/profile.vue
+++ b/app/components/preferences/profile.vue
@@ -1,5 +1,5 @@
-