build: switch from yarn to npm to manage js dependencies and move js contents to root
yarn v1 is being deprecated and starts to have some issues Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
69
src/composition/apollo/actor.ts
Normal file
69
src/composition/apollo/actor.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import {
|
||||
CURRENT_ACTOR_CLIENT,
|
||||
GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED,
|
||||
IDENTITIES,
|
||||
PERSON_STATUS_GROUP,
|
||||
} from "@/graphql/actor";
|
||||
import { IPerson } from "@/types/actor";
|
||||
import { ICurrentUser } from "@/types/current-user.model";
|
||||
import { useQuery } from "@vue/apollo-composable";
|
||||
import { computed, Ref, unref } from "vue";
|
||||
import { useCurrentUserClient } from "./user";
|
||||
|
||||
export function useCurrentActorClient() {
|
||||
const {
|
||||
result: currentActorResult,
|
||||
error,
|
||||
loading,
|
||||
} = useQuery<{ currentActor: IPerson }>(CURRENT_ACTOR_CLIENT);
|
||||
const currentActor = computed<IPerson | undefined>(
|
||||
() => currentActorResult.value?.currentActor
|
||||
);
|
||||
return { currentActor, error, loading };
|
||||
}
|
||||
|
||||
export function useCurrentUserIdentities() {
|
||||
const { currentUser } = useCurrentUserClient();
|
||||
|
||||
const { result, error, loading } = useQuery<{
|
||||
loggedUser: Pick<ICurrentUser, "actors">;
|
||||
}>(IDENTITIES, {}, () => ({
|
||||
enabled:
|
||||
currentUser.value?.id !== undefined &&
|
||||
currentUser.value?.id !== null &&
|
||||
currentUser.value?.isLoggedIn === true,
|
||||
}));
|
||||
|
||||
const identities = computed(() => result.value?.loggedUser?.actors);
|
||||
return { identities, error, loading };
|
||||
}
|
||||
|
||||
export function usePersonStatusGroup(
|
||||
groupFederatedUsername: string | undefined | Ref<string | undefined>
|
||||
) {
|
||||
const { currentActor } = useCurrentActorClient();
|
||||
const { result, error, loading, subscribeToMore } = useQuery<{
|
||||
person: IPerson;
|
||||
}>(
|
||||
PERSON_STATUS_GROUP,
|
||||
() => ({
|
||||
id: currentActor.value?.id,
|
||||
group: unref(groupFederatedUsername),
|
||||
}),
|
||||
() => ({
|
||||
enabled:
|
||||
currentActor.value?.id !== undefined &&
|
||||
unref(groupFederatedUsername) !== undefined &&
|
||||
unref(groupFederatedUsername) !== "",
|
||||
})
|
||||
);
|
||||
subscribeToMore(() => ({
|
||||
document: GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED,
|
||||
variables: {
|
||||
actorId: currentActor.value?.id,
|
||||
group: unref(groupFederatedUsername),
|
||||
},
|
||||
}));
|
||||
const person = computed(() => result.value?.person);
|
||||
return { person, error, loading };
|
||||
}
|
||||
Reference in New Issue
Block a user