import { toast } from "vue-sonner";
import * as m from "~~/paraglide/messages.js";

export const useCacheRefresh = () => {
    const authStore = useAuthStore();
    const { identity } = storeToRefs(authStore);

    authStore.client.getInstance().then((res) => {
        authStore.updateActiveIdentity({
            instance: res.data,
        });
    });

    // Refresh custom emojis and instance data and me on every reload
    watch(
        identity,
        async (oldIdentity, newIdentity) => {
            if (newIdentity && newIdentity.id !== oldIdentity?.id) {
                console.info("Refreshing emoji, instance and account cache");
                authStore.client
                    .verifyAccountCredentials()
                    .then((res) => {
                        authStore.updateActiveIdentity({
                            account: res.data,
                        });
                    })
                    .catch((err) => {
                        const code = err.response.status;

                        if (code === 401) {
                            // Reset tokenData
                            authStore.setActiveIdentity(null);
                            toast.error(m.fancy_this_wasp_renew(), {
                                description: m.real_weird_deer_stop(),
                            });
                        }
                    });

                authStore.client.getInstanceCustomEmojis().then((res) => {
                    authStore.updateActiveIdentity({
                        emojis: res.data,
                    });
                });
            }
        },
        { flush: "sync", immediate: true },
    );
};
