mirror of
https://github.com/versia-pub/frontend.git
synced 2025-12-06 16:38:20 +01:00
refactor: ⬆️ Update @lysand-org/client to 0.2.0, use its types instead
This commit is contained in:
parent
cd1fb48b68
commit
8a984abfb2
|
|
@ -46,9 +46,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type { Instance, Status } from "@lysand-org/client/types";
|
||||||
import { nanoid } from "nanoid";
|
import { nanoid } from "nanoid";
|
||||||
import type { Instance } from "~/types/mastodon/instance";
|
|
||||||
import type { Status } from "~/types/mastodon/status";
|
|
||||||
import { OverlayScrollbarsComponent } from "#imports";
|
import { OverlayScrollbarsComponent } from "#imports";
|
||||||
import type FileUploader from "./file-uploader.vue";
|
import type FileUploader from "./file-uploader.vue";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type { Emoji } from "@lysand-org/client/types";
|
||||||
import { distance } from "fastest-levenshtein";
|
import { distance } from "fastest-levenshtein";
|
||||||
import type { CustomEmoji } from "~/composables/Identities";
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
currentlyTypingEmoji: string | null;
|
currentlyTypingEmoji: string | null;
|
||||||
textarea: HTMLTextAreaElement | undefined;
|
textarea: HTMLTextAreaElement | undefined;
|
||||||
|
|
@ -30,7 +30,7 @@ const { Tab, ArrowRight, ArrowLeft, Enter } = useMagicKeys({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const identity = useCurrentIdentity();
|
const identity = useCurrentIdentity();
|
||||||
const topEmojis = ref<CustomEmoji[] | null>(null);
|
const topEmojis = ref<Emoji[] | null>(null);
|
||||||
const selectedEmojiIndex = ref<number | null>(null);
|
const selectedEmojiIndex = ref<number | null>(null);
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type { Account } from "@lysand-org/client/types";
|
||||||
import { distance } from "fastest-levenshtein";
|
import { distance } from "fastest-levenshtein";
|
||||||
import type { Account } from "~/types/mastodon/account";
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
currentlyTypingMention: string | null;
|
currentlyTypingMention: string | null;
|
||||||
textarea: HTMLTextAreaElement | undefined;
|
textarea: HTMLTextAreaElement | undefined;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-3 px-4">
|
<div class="mt-3 px-4">
|
||||||
<InputsRichTextbox v-model:model-content="note" :max-characters="noteCharacterLimit" :disabled="loading"
|
<InputsRichTextbox v-model:model-content="note" :max-characters="bio" :disabled="loading"
|
||||||
class="rounded ring-white/10 ring-2 focus:ring-primary-600 px-4 py-2 max-h-[40dvh] max-w-full" />
|
class="rounded ring-white/10 ring-2 focus:ring-primary-600 px-4 py-2 max-h-[40dvh] max-w-full" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -52,7 +52,7 @@ const account = computed(() => identity.value?.account);
|
||||||
const note = ref(account.value?.source?.note ?? "");
|
const note = ref(account.value?.source?.note ?? "");
|
||||||
const displayName = ref(account.value?.display_name ?? "");
|
const displayName = ref(account.value?.display_name ?? "");
|
||||||
const acct = ref(account.value?.acct ?? "");
|
const acct = ref(account.value?.acct ?? "");
|
||||||
const noteCharacterLimit = computed(
|
const bio = computed(
|
||||||
() => identity.value?.instance.configuration.statuses.max_characters ?? 0,
|
() => identity.value?.instance.configuration.statuses.max_characters ?? 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Dialog } from "@ark-ui/vue";
|
import { Dialog } from "@ark-ui/vue";
|
||||||
import type { Attachment } from "~/types/mastodon/attachment";
|
import type { Attachment } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const lightbox = ref(false);
|
const lightbox = ref(false);
|
||||||
const attachment = ref<Attachment | null>(null);
|
const attachment = ref<Attachment | null>(null);
|
||||||
|
|
|
||||||
|
|
@ -16,14 +16,14 @@
|
||||||
<iconify-icon icon="tabler:file" width="none" class="size-10 text-gray-300" />
|
<iconify-icon icon="tabler:file" width="none" class="size-10 text-gray-300" />
|
||||||
<p class="text-gray-300 text-sm font-mono">{{ getFilename(attachment.url) }}</p>
|
<p class="text-gray-300 text-sm font-mono">{{ getFilename(attachment.url) }}</p>
|
||||||
<p class="text-gray-300 text-xs" v-if="attachment.meta?.length">{{
|
<p class="text-gray-300 text-xs" v-if="attachment.meta?.length">{{
|
||||||
formatBytes(Number(attachment.meta?.length)) }}</p>
|
formatBytes(Number(attachment.meta?.length)) }}</p>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- Alt text viewer -->
|
<!-- Alt text viewer -->
|
||||||
<Popover.Root :positioning="{
|
<Popover.Root :positioning="{
|
||||||
strategy: 'fixed',
|
strategy: 'fixed',
|
||||||
}" v-if="attachment.description">
|
}" v-if="attachment.description">
|
||||||
<Popover.Trigger aria-hidden="true"
|
<Popover.Trigger aria-hidden="true"
|
||||||
class="absolute top-2 right-2 p-1 bg-dark-800 ring-1 ring-white/5 text-white text-xs rounded size-8">
|
class="absolute top-2 right-2 p-1 bg-dark-800 ring-1 ring-white/5 text-white text-xs rounded size-8">
|
||||||
<iconify-icon icon="tabler:alt" width="none" class="size-6" />
|
<iconify-icon icon="tabler:alt" width="none" class="size-6" />
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Popover } from "@ark-ui/vue";
|
import { Popover } from "@ark-ui/vue";
|
||||||
import type { Attachment } from "~/types/mastodon/attachment";
|
import type { Attachment } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
attachment: Attachment;
|
attachment: Attachment;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<NuxtLink :href="accountUrl" class="font-semibold text-gray-200 line-clamp-1 break-all">
|
<NuxtLink :href="accountUrl" class="font-semibold text-gray-200 line-clamp-1 break-all">
|
||||||
<Skeleton :enabled="!note" :min-width="90" :max-width="170" shape="rect">
|
<Skeleton :enabled="!note" :min-width="90" :max-width="170" shape="rect">
|
||||||
{{
|
{{
|
||||||
note?.account.display_name }}
|
note?.account.display_name }}
|
||||||
</Skeleton>
|
</Skeleton>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<NuxtLink :href="noteUrl" class="text-gray-300 ml-2 line-clamp-1 break-all shrink-0">
|
<NuxtLink :href="noteUrl" class="text-gray-300 ml-2 line-clamp-1 break-all shrink-0">
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
<NuxtLink :href="accountUrl" class="font-semibold text-gray-200 line-clamp-1 break-all">
|
<NuxtLink :href="accountUrl" class="font-semibold text-gray-200 line-clamp-1 break-all">
|
||||||
<Skeleton :enabled="!note" :min-width="90" :max-width="170" shape="rect">
|
<Skeleton :enabled="!note" :min-width="90" :max-width="170" shape="rect">
|
||||||
{{
|
{{
|
||||||
note?.account.display_name }}
|
note?.account.display_name }}
|
||||||
</Skeleton>
|
</Skeleton>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<NuxtLink :href="noteUrl" class="text-gray-300 text-sm ml-2 line-clamp-1 break-all shrink-0"
|
<NuxtLink :href="noteUrl" class="text-gray-300 text-sm ml-2 line-clamp-1 break-all shrink-0"
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<Skeleton :enabled="!note" :min-width="130" :max-width="250" shape="rect">
|
<Skeleton :enabled="!note" :min-width="130" :max-width="250" shape="rect">
|
||||||
<span class="group-hover:hidden">
|
<span class="group-hover:hidden">
|
||||||
@{{
|
@{{
|
||||||
note?.account.acct
|
note?.account.acct
|
||||||
}}</span>
|
}}</span>
|
||||||
<span @click="copyAccount" v-if="!hasCopied"
|
<span @click="copyAccount" v-if="!hasCopied"
|
||||||
class="hidden select-none group-hover:flex cursor-pointer items-center gap-x-1">
|
class="hidden select-none group-hover:flex cursor-pointer items-center gap-x-1">
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
note?: Status;
|
note?: Status;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
account: Account;
|
account: Account;
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
content: string | null;
|
content: string | null;
|
||||||
|
|
|
||||||
|
|
@ -130,11 +130,11 @@
|
||||||
<Menu.Item value="">
|
<Menu.Item value="">
|
||||||
<ButtonsDropdownElement @click="outputtedNote && useEvent('note:report', outputtedNote)"
|
<ButtonsDropdownElement @click="outputtedNote && useEvent('note:report', outputtedNote)"
|
||||||
icon="tabler:flag" class="w-full"
|
icon="tabler:flag" class="w-full"
|
||||||
:disabled="!permissions.includes(RolePermissions.MANAGE_OWN_REPORTS)">
|
:disabled="!permissions.includes(RolePermission.ManageOwnReports)">
|
||||||
Report
|
Report
|
||||||
</ButtonsDropdownElement>
|
</ButtonsDropdownElement>
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
<Menu.Item value="" v-if="permissions.includes(RolePermissions.MANAGE_ACCOUNTS)">
|
<Menu.Item value="" v-if="permissions.includes(RolePermission.ManageAccounts)">
|
||||||
<ButtonsDropdownElement icon="tabler:shield-bolt" class="w-full">
|
<ButtonsDropdownElement icon="tabler:shield-bolt" class="w-full">
|
||||||
Open Moderation Panel
|
Open Moderation Panel
|
||||||
</ButtonsDropdownElement>
|
</ButtonsDropdownElement>
|
||||||
|
|
@ -149,8 +149,8 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Menu } from "@ark-ui/vue";
|
import { Menu } from "@ark-ui/vue";
|
||||||
|
import { RolePermission, type Status } from "@lysand-org/client/types";
|
||||||
import Skeleton from "~/components/skeleton/Skeleton.vue";
|
import Skeleton from "~/components/skeleton/Skeleton.vue";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
|
||||||
|
|
||||||
const props = withDefaults(
|
const props = withDefaults(
|
||||||
defineProps<{
|
defineProps<{
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Notification } from "~/types/mastodon/notification";
|
import type { Notification, Relationship } from "@lysand-org/client/types";
|
||||||
import type { Relationship } from "~/types/mastodon/relationship";
|
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
notification?: Notification;
|
notification?: Notification;
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
account?: Account;
|
account?: Account;
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,14 @@
|
||||||
<div class="font-semibold text-gray-200 line-clamp-1 break-all">
|
<div class="font-semibold text-gray-200 line-clamp-1 break-all">
|
||||||
<Skeleton :enabled="!account" :min-width="90" :max-width="170" shape="rect">
|
<Skeleton :enabled="!account" :min-width="90" :max-width="170" shape="rect">
|
||||||
{{
|
{{
|
||||||
account?.display_name }}
|
account?.display_name }}
|
||||||
</Skeleton>
|
</Skeleton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="text-gray-400 text-sm line-clamp-1 break-all w-full">
|
<span class="text-gray-400 text-sm line-clamp-1 break-all w-full">
|
||||||
<Skeleton :enabled="!account" :min-width="130" :max-width="250" shape="rect">
|
<Skeleton :enabled="!account" :min-width="130" :max-width="250" shape="rect">
|
||||||
@{{
|
@{{
|
||||||
account?.acct
|
account?.acct
|
||||||
}}
|
}}
|
||||||
</Skeleton>
|
</Skeleton>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account } from "@lysand-org/client/types";
|
||||||
import { NuxtLink } from "#components";
|
import { NuxtLink } from "#components";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
timeline: Status[];
|
timeline: Status[];
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useAccount = (
|
export const useAccount = (
|
||||||
client: MaybeRef<LysandClient | null>,
|
client: MaybeRef<LysandClient | null>,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useAccountSearch = (
|
export const useAccountSearch = (
|
||||||
client: MaybeRef<LysandClient | null>,
|
client: MaybeRef<LysandClient | null>,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useAccountTimeline = (
|
export const useAccountTimeline = (
|
||||||
client: LysandClient | null,
|
client: LysandClient | null,
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { ApplicationData } from "@lysand-org/client/types";
|
||||||
import { StorageSerializers } from "@vueuse/core";
|
import { StorageSerializers } from "@vueuse/core";
|
||||||
|
|
||||||
export type ApplicationData = Awaited<
|
|
||||||
ReturnType<LysandClient["createApp"]>
|
|
||||||
>["data"];
|
|
||||||
|
|
||||||
export const useAppData = () => {
|
export const useAppData = () => {
|
||||||
return useLocalStorage<ApplicationData | null>("lysand:app_data", null, {
|
return useLocalStorage<ApplicationData | null>("lysand:app_data", null, {
|
||||||
serializer: StorageSerializers.object,
|
serializer: StorageSerializers.object,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import { type RolePermissions, useCurrentIdentity } from "./Identities";
|
import type { RolePermission } from "@lysand-org/client/types";
|
||||||
|
import { useCurrentIdentity } from "./Identities";
|
||||||
|
|
||||||
export const useCacheRefresh = (client: MaybeRef<LysandClient | null>) => {
|
export const useCacheRefresh = (client: MaybeRef<LysandClient | null>) => {
|
||||||
if (import.meta.server) return;
|
if (import.meta.server) return;
|
||||||
|
|
@ -48,7 +49,7 @@ export const useCacheRefresh = (client: MaybeRef<LysandClient | null>) => {
|
||||||
|
|
||||||
if (identity.value)
|
if (identity.value)
|
||||||
identity.value.permissions =
|
identity.value.permissions =
|
||||||
permissions as unknown as RolePermissions[];
|
permissions as unknown as RolePermission[];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
|
import type { Attachment, Status } from "@lysand-org/client/types";
|
||||||
import mitt from "mitt";
|
import mitt from "mitt";
|
||||||
import type { Attachment } from "~/types/mastodon/attachment";
|
|
||||||
import type { Status } from "~/types/mastodon/status";
|
|
||||||
import type { Identity } from "./Identities";
|
import type { Identity } from "./Identities";
|
||||||
|
|
||||||
export type NotificationEvent = {
|
export type NotificationEvent = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useHomeTimeline = (
|
export const useHomeTimeline = (
|
||||||
client: LysandClient | null,
|
client: LysandClient | null,
|
||||||
|
|
|
||||||
|
|
@ -1,65 +1,19 @@
|
||||||
import type { LysandClient, Token } from "@lysand-org/client";
|
import type { Token } from "@lysand-org/client";
|
||||||
|
import type {
|
||||||
|
Account,
|
||||||
|
Emoji,
|
||||||
|
Instance,
|
||||||
|
RolePermission,
|
||||||
|
} from "@lysand-org/client/types";
|
||||||
import { StorageSerializers } from "@vueuse/core";
|
import { StorageSerializers } from "@vueuse/core";
|
||||||
import type { Account } from "~/types/mastodon/account";
|
|
||||||
import type { Instance } from "./Instance";
|
|
||||||
|
|
||||||
export type Role = Awaited<ReturnType<LysandClient["getRole"]>>["data"];
|
|
||||||
export enum RolePermissions {
|
|
||||||
MANAGE_NOTES = "notes",
|
|
||||||
MANAGE_OWN_NOTES = "owner:note",
|
|
||||||
VIEW_NOTES = "read:note",
|
|
||||||
VIEW_NOTE_LIKES = "read:note_likes",
|
|
||||||
VIEW_NOTE_BOOSTS = "read:note_boosts",
|
|
||||||
MANAGE_ACCOUNTS = "accounts",
|
|
||||||
MANAGE_OWN_ACCOUNT = "owner:account",
|
|
||||||
VIEW_ACCOUNT_FOLLOWS = "read:account_follows",
|
|
||||||
MANAGE_LIKES = "likes",
|
|
||||||
MANAGE_OWN_LIKES = "owner:like",
|
|
||||||
MANAGE_BOOSTS = "boosts",
|
|
||||||
MANAGE_OWN_BOOSTS = "owner:boost",
|
|
||||||
VIEW_ACCOUNTS = "read:account",
|
|
||||||
MANAGE_EMOJIS = "emojis",
|
|
||||||
VIEW_EMOJIS = "read:emoji",
|
|
||||||
MANAGE_OWN_EMOJIS = "owner:emoji",
|
|
||||||
MANAGE_MEDIA = "media",
|
|
||||||
MANAGE_OWN_MEDIA = "owner:media",
|
|
||||||
MANAGE_BLOCKS = "blocks",
|
|
||||||
MANAGE_OWN_BLOCKS = "owner:block",
|
|
||||||
MANAGE_FILTERS = "filters",
|
|
||||||
MANAGE_OWN_FILTERS = "owner:filter",
|
|
||||||
MANAGE_MUTES = "mutes",
|
|
||||||
MANAGE_OWN_MUTES = "owner:mute",
|
|
||||||
MANAGE_REPORTS = "reports",
|
|
||||||
MANAGE_OWN_REPORTS = "owner:report",
|
|
||||||
MANAGE_SETTINGS = "settings",
|
|
||||||
MANAGE_OWN_SETTINGS = "owner:settings",
|
|
||||||
MANAGE_ROLES = "roles",
|
|
||||||
MANAGE_NOTIFICATIONS = "notifications",
|
|
||||||
MANAGE_OWN_NOTIFICATIONS = "owner:notification",
|
|
||||||
MANAGE_FOLLOWS = "follows",
|
|
||||||
MANAGE_OWN_FOLLOWS = "owner:follow",
|
|
||||||
MANAGE_OWN_APPS = "owner:app",
|
|
||||||
SEARCH = "search",
|
|
||||||
VIEW_PUBLIC_TIMELINES = "public_timelines",
|
|
||||||
VIEW_PRIVATE_TIMELINES = "private_timelines",
|
|
||||||
IGNORE_RATE_LIMITS = "ignore_rate_limits",
|
|
||||||
IMPERSONATE = "impersonate",
|
|
||||||
MANAGE_INSTANCE = "instance",
|
|
||||||
MANAGE_INSTANCE_FEDERATION = "instance:federation",
|
|
||||||
MANAGE_INSTANCE_SETTINGS = "instance:settings",
|
|
||||||
OAUTH = "oauth",
|
|
||||||
}
|
|
||||||
export type CustomEmoji = Awaited<
|
|
||||||
ReturnType<LysandClient["getInstanceCustomEmojis"]>
|
|
||||||
>["data"][0];
|
|
||||||
|
|
||||||
export type Identity = {
|
export type Identity = {
|
||||||
id: string;
|
id: string;
|
||||||
tokens: Token;
|
tokens: Token;
|
||||||
account: Account;
|
account: Account;
|
||||||
instance: Instance;
|
instance: Instance;
|
||||||
permissions: RolePermissions[];
|
permissions: RolePermission[];
|
||||||
emojis: CustomEmoji[];
|
emojis: Emoji[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useIdentities = (): Ref<Identity[]> => {
|
export const useIdentities = (): Ref<Identity[]> => {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
|
import type { ExtendedDescription, Instance } from "@lysand-org/client/types";
|
||||||
// Return type of LysandClient.getInstance
|
|
||||||
export type Instance = Awaited<ReturnType<LysandClient["getInstance"]>>["data"];
|
|
||||||
export type ExtendedDescription = Awaited<
|
|
||||||
ReturnType<LysandClient["getInstanceExtendedDescription"]>
|
|
||||||
>["data"];
|
|
||||||
|
|
||||||
export const useInstance = () => {
|
export const useInstance = () => {
|
||||||
const identity = useCurrentIdentity();
|
const identity = useCurrentIdentity();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useLocalTimeline = (
|
export const useLocalTimeline = (
|
||||||
client: LysandClient | null,
|
client: LysandClient | null,
|
||||||
|
|
@ -42,7 +42,7 @@ export const useLocalTimeline = (
|
||||||
);
|
);
|
||||||
if (newNotes.length > 0) {
|
if (newNotes.length > 0) {
|
||||||
fetchedNotes.value = [...fetchedNotes.value, ...newNotes];
|
fetchedNotes.value = [...fetchedNotes.value, ...newNotes];
|
||||||
nextMaxId = newNotes[newNotes.length - 1].id;
|
nextMaxId = newNotes[newNotes.length - 1]?.id;
|
||||||
for (const note of newNotes) {
|
for (const note of newNotes) {
|
||||||
fetchedNoteIds.add(note.id);
|
fetchedNoteIds.add(note.id);
|
||||||
}
|
}
|
||||||
|
|
@ -63,7 +63,7 @@ export const useLocalTimeline = (
|
||||||
);
|
);
|
||||||
if (newNotes.length > 0) {
|
if (newNotes.length > 0) {
|
||||||
fetchedNotes.value = [...newNotes, ...fetchedNotes.value];
|
fetchedNotes.value = [...newNotes, ...fetchedNotes.value];
|
||||||
prevMinId = newNotes[0].id;
|
prevMinId = newNotes[0]?.id;
|
||||||
for (const note of newNotes) {
|
for (const note of newNotes) {
|
||||||
fetchedNoteIds.add(note.id);
|
fetchedNoteIds.add(note.id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useNote = (
|
export const useNote = (
|
||||||
client: MaybeRef<LysandClient | null>,
|
client: MaybeRef<LysandClient | null>,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Context } from "~/types/mastodon/context";
|
import type { Context } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useNoteContext = (
|
export const useNoteContext = (
|
||||||
client: MaybeRef<LysandClient | null>,
|
client: MaybeRef<LysandClient | null>,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
|
import type { Status } from "@lysand-org/client/types";
|
||||||
import { SettingIds, type Settings } from "~/settings";
|
import { SettingIds, type Settings } from "~/settings";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
|
||||||
|
|
||||||
export const useNoteData = (
|
export const useNoteData = (
|
||||||
noteProp: MaybeRef<Status | undefined>,
|
noteProp: MaybeRef<Status | undefined>,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Notification } from "~/types/mastodon/notification";
|
import type { Notification } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useNotificationTimeline = (
|
export const useNotificationTimeline = (
|
||||||
client: LysandClient | null,
|
client: LysandClient | null,
|
||||||
|
|
@ -18,6 +18,7 @@ export const useNotificationTimeline = (
|
||||||
} => {
|
} => {
|
||||||
return useTimeline(
|
return useTimeline(
|
||||||
client,
|
client,
|
||||||
|
// @ts-expect-error dont listen to the voices jesse
|
||||||
(client, options) => client?.getNotifications(options),
|
(client, options) => client?.getNotifications(options),
|
||||||
options,
|
options,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
|
import type { Account, Emoji } from "@lysand-org/client/types";
|
||||||
import { renderToString } from "vue/server-renderer";
|
import { renderToString } from "vue/server-renderer";
|
||||||
import { SettingIds, type Settings, getSettingById } from "~/settings";
|
import { SettingIds, type Settings, getSettingById } from "~/settings";
|
||||||
import type { Account } from "~/types/mastodon/account";
|
|
||||||
import type { Emoji } from "~/types/mastodon/emoji";
|
|
||||||
import MentionComponent from "../components/social-elements/notes/mention.vue";
|
import MentionComponent from "../components/social-elements/notes/mention.vue";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Status } from "~/types/mastodon/status";
|
import type { Status } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const usePublicTimeline = (
|
export const usePublicTimeline = (
|
||||||
client: LysandClient | null,
|
client: LysandClient | null,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Relationship } from "~/types/mastodon/relationship";
|
import type { Relationship } from "@lysand-org/client/types";
|
||||||
import { useCurrentIdentity } from "./Identities";
|
import { useCurrentIdentity } from "./Identities";
|
||||||
|
|
||||||
export const useRelationship = (
|
export const useRelationship = (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import type { LysandClient } from "@lysand-org/client";
|
import type { LysandClient } from "@lysand-org/client";
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account, Mention } from "@lysand-org/client/types";
|
||||||
import type { Mention } from "~/types/mastodon/mention";
|
|
||||||
|
|
||||||
export const useResolveMentions = (
|
export const useResolveMentions = (
|
||||||
mentions: Ref<Mention[]>,
|
mentions: Ref<Mention[]>,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import type { Instance } from "./Instance";
|
import type { Instance } from "@lysand-org/client/types";
|
||||||
|
|
||||||
export const useSSOConfig = (): Ref<Instance["sso"] | null> => {
|
export const useSSOConfig = (): Ref<Instance["sso"] | null> => {
|
||||||
const instance = useInstance();
|
const instance = useInstance();
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ark-ui/vue": "^3.4.0",
|
"@ark-ui/vue": "^3.4.0",
|
||||||
"@lysand-org/client": "^0.1.8",
|
"@lysand-org/client": "^0.2.0",
|
||||||
"@nuxt/fonts": "^0.7.0",
|
"@nuxt/fonts": "^0.7.0",
|
||||||
"@tailwindcss/typography": "^0.5.13",
|
"@tailwindcss/typography": "^0.5.13",
|
||||||
"@vee-validate/nuxt": "^4.13.1",
|
"@vee-validate/nuxt": "^4.13.1",
|
||||||
|
|
@ -61,7 +61,8 @@
|
||||||
"@tailwindcss/forms": "^0.5.7",
|
"@tailwindcss/forms": "^0.5.7",
|
||||||
"@types/html-to-text": "^9.0.4",
|
"@types/html-to-text": "^9.0.4",
|
||||||
"@vue-email/nuxt": "^0.8.19",
|
"@vue-email/nuxt": "^0.8.19",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5",
|
||||||
|
"vue-tsc": "^2.0.21"
|
||||||
},
|
},
|
||||||
"trustedDependencies": [
|
"trustedDependencies": [
|
||||||
"@biomejs/biome",
|
"@biomejs/biome",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { Account } from "~/types/mastodon/account";
|
import type { Account } from "@lysand-org/client/types";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "app",
|
layout: "app",
|
||||||
|
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
import type { Role as LysandRole } from "~/composables/Identities";
|
|
||||||
import type { Emoji } from "./emoji";
|
|
||||||
import type { Field } from "./field";
|
|
||||||
import type { Role } from "./role";
|
|
||||||
import type { Source } from "./source";
|
|
||||||
|
|
||||||
export type Account = {
|
|
||||||
id: string;
|
|
||||||
username: string;
|
|
||||||
acct: string;
|
|
||||||
display_name: string;
|
|
||||||
locked: boolean;
|
|
||||||
discoverable?: boolean;
|
|
||||||
group: boolean | null;
|
|
||||||
noindex: boolean | null;
|
|
||||||
suspended: boolean | null;
|
|
||||||
limited: boolean | null;
|
|
||||||
created_at: string;
|
|
||||||
followers_count: number;
|
|
||||||
following_count: number;
|
|
||||||
statuses_count: number;
|
|
||||||
note: string;
|
|
||||||
url: string;
|
|
||||||
avatar: string;
|
|
||||||
avatar_static: string;
|
|
||||||
header: string;
|
|
||||||
header_static: string;
|
|
||||||
emojis: Array<Emoji>;
|
|
||||||
moved: Account | null;
|
|
||||||
fields: Array<Field>;
|
|
||||||
bot: boolean | null;
|
|
||||||
source?: Source;
|
|
||||||
role?: Role;
|
|
||||||
roles: LysandRole[];
|
|
||||||
mute_expires_at?: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
export type Activity = {
|
|
||||||
week: string;
|
|
||||||
statuses: string;
|
|
||||||
logins: string;
|
|
||||||
registrations: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
import type { Emoji } from "./emoji";
|
|
||||||
import type { StatusTag } from "./status";
|
|
||||||
|
|
||||||
export type Announcement = {
|
|
||||||
id: string;
|
|
||||||
content: string;
|
|
||||||
starts_at: string | null;
|
|
||||||
ends_at: string | null;
|
|
||||||
published: boolean;
|
|
||||||
all_day: boolean;
|
|
||||||
published_at: string;
|
|
||||||
updated_at: string | null;
|
|
||||||
read: boolean | null;
|
|
||||||
mentions: Array<AnnouncementAccount>;
|
|
||||||
statuses: Array<AnnouncementStatus>;
|
|
||||||
tags: Array<StatusTag>;
|
|
||||||
emojis: Array<Emoji>;
|
|
||||||
reactions: Array<AnnouncementReaction>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type AnnouncementAccount = {
|
|
||||||
id: string;
|
|
||||||
username: string;
|
|
||||||
url: string;
|
|
||||||
acct: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type AnnouncementStatus = {
|
|
||||||
id: string;
|
|
||||||
url: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type AnnouncementReaction = {
|
|
||||||
name: string;
|
|
||||||
count: number;
|
|
||||||
me: boolean | null;
|
|
||||||
url: string | null;
|
|
||||||
static_url: string | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
export type Application = {
|
|
||||||
name: string;
|
|
||||||
website?: string | null;
|
|
||||||
vapid_key?: string | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
import type { Meta } from "./attachment";
|
|
||||||
|
|
||||||
export type AsyncAttachment = {
|
|
||||||
id: string;
|
|
||||||
type: "unknown" | "image" | "gifv" | "video" | "audio";
|
|
||||||
url: string | null;
|
|
||||||
remote_url: string | null;
|
|
||||||
preview_url: string;
|
|
||||||
text_url: string | null;
|
|
||||||
meta: Meta | null;
|
|
||||||
description: string | null;
|
|
||||||
blurhash: string | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
export type Sub = {
|
|
||||||
// For Image, Gifv, and Video
|
|
||||||
width?: number;
|
|
||||||
height?: number;
|
|
||||||
size?: string;
|
|
||||||
aspect?: number;
|
|
||||||
|
|
||||||
// For Gifv and Video
|
|
||||||
frame_rate?: string;
|
|
||||||
|
|
||||||
// For Audio, Gifv, and Video
|
|
||||||
duration?: number;
|
|
||||||
bitrate?: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Focus = {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Meta = {
|
|
||||||
original?: Sub;
|
|
||||||
small?: Sub;
|
|
||||||
focus?: Focus;
|
|
||||||
length?: string;
|
|
||||||
duration?: number;
|
|
||||||
fps?: number;
|
|
||||||
size?: string;
|
|
||||||
width?: number;
|
|
||||||
height?: number;
|
|
||||||
aspect?: number;
|
|
||||||
audio_encode?: string;
|
|
||||||
audio_bitrate?: string;
|
|
||||||
audio_channel?: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Attachment = {
|
|
||||||
id: string;
|
|
||||||
type: "unknown" | "image" | "gifv" | "video" | "audio";
|
|
||||||
url: string;
|
|
||||||
remote_url: string | null;
|
|
||||||
preview_url: string | null;
|
|
||||||
text_url: string | null;
|
|
||||||
meta: Meta | null;
|
|
||||||
description: string | null;
|
|
||||||
blurhash: string | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
export type Card = {
|
|
||||||
url: string;
|
|
||||||
title: string;
|
|
||||||
description: string;
|
|
||||||
type: "link" | "photo" | "video" | "rich";
|
|
||||||
image: string | null;
|
|
||||||
author_name: string | null;
|
|
||||||
author_url: string | null;
|
|
||||||
provider_name: string | null;
|
|
||||||
provider_url: string | null;
|
|
||||||
html: string | null;
|
|
||||||
width: number | null;
|
|
||||||
height: number | null;
|
|
||||||
embed_url: string | null;
|
|
||||||
blurhash: string | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
import type { Status } from "./status";
|
|
||||||
|
|
||||||
export type Context = {
|
|
||||||
ancestors: Array<Status>;
|
|
||||||
descendants: Array<Status>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
import type { Status } from "./status";
|
|
||||||
|
|
||||||
export type Conversation = {
|
|
||||||
id: string;
|
|
||||||
accounts: Array<Account>;
|
|
||||||
last_status: Status | null;
|
|
||||||
unread: boolean;
|
|
||||||
};
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
export type Emoji = {
|
|
||||||
shortcode: string;
|
|
||||||
static_url: string;
|
|
||||||
url: string;
|
|
||||||
visible_in_picker: boolean;
|
|
||||||
category?: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
export type FeaturedTag = {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
statuses_count: number;
|
|
||||||
last_status_at: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
export type Field = {
|
|
||||||
name: string;
|
|
||||||
value: string;
|
|
||||||
verified_at?: string | null;
|
|
||||||
verified?: boolean | false;
|
|
||||||
};
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
export type Filter = {
|
|
||||||
id: string;
|
|
||||||
phrase: string;
|
|
||||||
context: Array<FilterContext>;
|
|
||||||
expires_at: string | null;
|
|
||||||
irreversible: boolean;
|
|
||||||
whole_word: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type FilterContext = string;
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
import type { Emoji } from "./emoji";
|
|
||||||
import type { Field } from "./field";
|
|
||||||
|
|
||||||
export type FollowRequest = {
|
|
||||||
id: number;
|
|
||||||
username: string;
|
|
||||||
acct: string;
|
|
||||||
display_name: string;
|
|
||||||
locked: boolean;
|
|
||||||
bot: boolean;
|
|
||||||
discoverable?: boolean;
|
|
||||||
group: boolean;
|
|
||||||
created_at: string;
|
|
||||||
note: string;
|
|
||||||
url: string;
|
|
||||||
avatar: string;
|
|
||||||
avatar_static: string;
|
|
||||||
header: string;
|
|
||||||
header_static: string;
|
|
||||||
followers_count: number;
|
|
||||||
following_count: number;
|
|
||||||
statuses_count: number;
|
|
||||||
emojis: Array<Emoji>;
|
|
||||||
fields: Array<Field>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
export type History = {
|
|
||||||
day: string;
|
|
||||||
uses: number;
|
|
||||||
accounts: number;
|
|
||||||
};
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
export type IdentityProof = {
|
|
||||||
provider: string;
|
|
||||||
provider_username: string;
|
|
||||||
updated_at: string;
|
|
||||||
proof_url: string;
|
|
||||||
profile_url: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
import type { Stats } from "./stats";
|
|
||||||
import type { URLs } from "./urls";
|
|
||||||
|
|
||||||
export type Instance = {
|
|
||||||
uri: string;
|
|
||||||
title: string;
|
|
||||||
description: string;
|
|
||||||
email: string;
|
|
||||||
version: string;
|
|
||||||
thumbnail: string | null;
|
|
||||||
urls: URLs | null;
|
|
||||||
stats: Stats;
|
|
||||||
languages: Array<string>;
|
|
||||||
registrations: boolean;
|
|
||||||
approval_required: boolean;
|
|
||||||
invites_enabled?: boolean;
|
|
||||||
configuration: {
|
|
||||||
statuses: {
|
|
||||||
max_characters: number;
|
|
||||||
max_media_attachments?: number;
|
|
||||||
characters_reserved_per_url?: number;
|
|
||||||
};
|
|
||||||
polls?: {
|
|
||||||
max_options: number;
|
|
||||||
max_characters_per_option: number;
|
|
||||||
min_expiration: number;
|
|
||||||
max_expiration: number;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
contact_account?: Account;
|
|
||||||
rules?: Array<InstanceRule>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type InstanceRule = {
|
|
||||||
id: string;
|
|
||||||
text: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
export type List = {
|
|
||||||
id: string;
|
|
||||||
title: string;
|
|
||||||
replies_policy: RepliesPolicy | null;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type RepliesPolicy = "followed" | "list" | "none";
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
export type Marker = {
|
|
||||||
home?: {
|
|
||||||
last_read_id: string;
|
|
||||||
version: number;
|
|
||||||
updated_at: string;
|
|
||||||
};
|
|
||||||
notifications?: {
|
|
||||||
last_read_id: string;
|
|
||||||
version: number;
|
|
||||||
updated_at: string;
|
|
||||||
unread_count?: number;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
export type Mention = {
|
|
||||||
id: string;
|
|
||||||
username: string;
|
|
||||||
url: string;
|
|
||||||
acct: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
import type { Reaction } from "./reaction";
|
|
||||||
import type { Status } from "./status";
|
|
||||||
|
|
||||||
export type Notification = {
|
|
||||||
account: Account | null;
|
|
||||||
created_at: string;
|
|
||||||
id: string;
|
|
||||||
status?: Status;
|
|
||||||
reaction?: Reaction;
|
|
||||||
type: NotificationType;
|
|
||||||
target?: Account;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type NotificationType = string;
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
export type Poll = {
|
|
||||||
id: string;
|
|
||||||
expires_at: string | null;
|
|
||||||
expired: boolean;
|
|
||||||
multiple: boolean;
|
|
||||||
votes_count: number;
|
|
||||||
options: Array<PollOption>;
|
|
||||||
voted: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type PollOption = {
|
|
||||||
title: string;
|
|
||||||
votes_count: number | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import type { StatusVisibility } from "./status";
|
|
||||||
|
|
||||||
export type Preferences = {
|
|
||||||
"posting:default:visibility": StatusVisibility;
|
|
||||||
"posting:default:sensitive": boolean;
|
|
||||||
"posting:default:language": string | null;
|
|
||||||
"reading:expand:media": "default" | "show_all" | "hide_all";
|
|
||||||
"reading:expand:spoilers": boolean;
|
|
||||||
};
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
export type Alerts = {
|
|
||||||
follow: boolean;
|
|
||||||
favourite: boolean;
|
|
||||||
mention: boolean;
|
|
||||||
reblog: boolean;
|
|
||||||
poll: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type PushSubscription = {
|
|
||||||
id: string;
|
|
||||||
endpoint: string;
|
|
||||||
server_key: string;
|
|
||||||
alerts: Alerts;
|
|
||||||
};
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
|
|
||||||
export type Reaction = {
|
|
||||||
count: number;
|
|
||||||
me: boolean;
|
|
||||||
name: string;
|
|
||||||
url?: string;
|
|
||||||
static_url?: string;
|
|
||||||
accounts?: Array<Account>;
|
|
||||||
account_ids?: Array<string>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
export type Relationship = {
|
|
||||||
id: string;
|
|
||||||
following: boolean;
|
|
||||||
followed_by: boolean;
|
|
||||||
blocking: boolean;
|
|
||||||
blocked_by: boolean;
|
|
||||||
muting: boolean;
|
|
||||||
muting_notifications: boolean;
|
|
||||||
requested: boolean;
|
|
||||||
requested_by: boolean;
|
|
||||||
domain_blocking: boolean;
|
|
||||||
showing_reblogs: boolean;
|
|
||||||
endorsed: boolean;
|
|
||||||
notifying: boolean;
|
|
||||||
note: string | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
|
|
||||||
export type Report = {
|
|
||||||
id: string;
|
|
||||||
action_taken: boolean;
|
|
||||||
action_taken_at: string | null;
|
|
||||||
status_ids: Array<string> | null;
|
|
||||||
rule_ids: Array<string> | null;
|
|
||||||
// These parameters don't exist in Pleroma
|
|
||||||
category: Category | null;
|
|
||||||
comment: string | null;
|
|
||||||
forwarded: boolean | null;
|
|
||||||
target_account?: Account | null;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Category = "spam" | "violation" | "other";
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
import type { Status } from "./status";
|
|
||||||
import type { Tag } from "./tag";
|
|
||||||
|
|
||||||
export type Results = {
|
|
||||||
accounts: Array<Account>;
|
|
||||||
statuses: Array<Status>;
|
|
||||||
hashtags: Array<Tag>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
export type Role = {
|
|
||||||
name: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import type { Attachment } from "./attachment";
|
|
||||||
import type { StatusParams } from "./status_params";
|
|
||||||
|
|
||||||
export type ScheduledStatus = {
|
|
||||||
id: string;
|
|
||||||
scheduled_at: string;
|
|
||||||
params: StatusParams;
|
|
||||||
media_attachments: Array<Attachment> | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import type { Field } from "./field";
|
|
||||||
|
|
||||||
export type Source = {
|
|
||||||
privacy: string | null;
|
|
||||||
sensitive: boolean | null;
|
|
||||||
language: string | null;
|
|
||||||
note: string;
|
|
||||||
fields: Array<Field>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
export type Stats = {
|
|
||||||
user_count: number;
|
|
||||||
status_count: number;
|
|
||||||
domain_count: number;
|
|
||||||
};
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
import type { Account } from "./account";
|
|
||||||
import type { Application } from "./application";
|
|
||||||
import type { Attachment } from "./attachment";
|
|
||||||
import type { Card } from "./card";
|
|
||||||
import type { Emoji } from "./emoji";
|
|
||||||
import type { Mention } from "./mention";
|
|
||||||
import type { Poll } from "./poll";
|
|
||||||
import type { Reaction } from "./reaction";
|
|
||||||
|
|
||||||
export type Status = {
|
|
||||||
id: string;
|
|
||||||
uri: string;
|
|
||||||
url?: string;
|
|
||||||
account: Account;
|
|
||||||
in_reply_to_id: string | null;
|
|
||||||
in_reply_to_account_id: string | null;
|
|
||||||
reblog: Status | null;
|
|
||||||
content: string;
|
|
||||||
plain_content: string | null;
|
|
||||||
created_at: string;
|
|
||||||
edited_at: string | null;
|
|
||||||
emojis: Emoji[];
|
|
||||||
replies_count: number;
|
|
||||||
reblogs_count: number;
|
|
||||||
favourites_count: number;
|
|
||||||
reblogged: boolean | null;
|
|
||||||
favourited: boolean | null;
|
|
||||||
muted: boolean | null;
|
|
||||||
sensitive: boolean;
|
|
||||||
spoiler_text: string;
|
|
||||||
visibility: StatusVisibility;
|
|
||||||
media_attachments: Array<Attachment>;
|
|
||||||
mentions: Array<Mention>;
|
|
||||||
tags: Array<StatusTag>;
|
|
||||||
card: Card | null;
|
|
||||||
poll: Poll | null;
|
|
||||||
application: Application | null;
|
|
||||||
language: string | null;
|
|
||||||
pinned: boolean | null;
|
|
||||||
emoji_reactions: Array<Reaction>;
|
|
||||||
quote: Status | null;
|
|
||||||
bookmarked: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type StatusTag = {
|
|
||||||
name: string;
|
|
||||||
url: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type StatusVisibility = "public" | "unlisted" | "private" | "direct";
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
import type { StatusVisibility } from "./status";
|
|
||||||
|
|
||||||
export type StatusParams = {
|
|
||||||
text: string;
|
|
||||||
in_reply_to_id: string | null;
|
|
||||||
media_ids: Array<string> | null;
|
|
||||||
sensitive: boolean | null;
|
|
||||||
spoiler_text: string | null;
|
|
||||||
visibility: StatusVisibility | null;
|
|
||||||
scheduled_at: string | null;
|
|
||||||
application_id: number | null;
|
|
||||||
};
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
export type StatusSource = {
|
|
||||||
id: string;
|
|
||||||
text: string;
|
|
||||||
spoiler_text: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
import type { History } from "./history";
|
|
||||||
|
|
||||||
export type Tag = {
|
|
||||||
name: string;
|
|
||||||
url: string;
|
|
||||||
history: Array<History>;
|
|
||||||
following?: boolean;
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
export type Token = {
|
|
||||||
access_token: string;
|
|
||||||
token_type: string;
|
|
||||||
scope: string;
|
|
||||||
created_at: number;
|
|
||||||
};
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
export type URLs = {
|
|
||||||
streaming_api: string;
|
|
||||||
};
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import type { ApplicationData } from "@lysand-org/client/types";
|
||||||
import { nanoid } from "nanoid";
|
import { nanoid } from "nanoid";
|
||||||
|
|
||||||
export const signInWithCode = (code: string, appData: ApplicationData) => {
|
export const signInWithCode = (code: string, appData: ApplicationData) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue