Fix front-end stuff

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2023-03-23 20:39:39 +01:00
parent 986ae45f52
commit c4e9f88e85
23 changed files with 229 additions and 83 deletions

View File

@@ -77,10 +77,9 @@ import { displayName, usernameWithDomain } from "@/types/actor";
import DiscussionListItem from "@/components/Discussion/DiscussionListItem.vue";
import RouteName from "../../router/name";
import { MemberRole } from "@/types/enums";
import { useGroupDiscussionsList } from "@/composition/apollo/discussions";
import { IMember } from "@/types/actor/member.model";
import EmptyContent from "@/components/Utils/EmptyContent.vue";
import { useGroup } from "@/composition/apollo/group";
import { usePersonStatusGroup } from "@/composition/apollo/actor";
import { useI18n } from "vue-i18n";
import { useRouteQuery, integerTransformer } from "vue-use-route-query";
@@ -92,10 +91,13 @@ const DISCUSSIONS_PER_PAGE = 10;
const props = defineProps<{ preferredUsername: string }>();
const { group, loading: groupLoading } = useGroup(props.preferredUsername, {
discussionsPage: page.value,
discussionsLimit: DISCUSSIONS_PER_PAGE,
});
const { group, loading: groupLoading } = useGroupDiscussionsList(
props.preferredUsername,
{
discussionsPage: page.value,
discussionsLimit: DISCUSSIONS_PER_PAGE,
}
);
const { person, loading: personLoading } = usePersonStatusGroup(
props.preferredUsername
@@ -109,7 +111,7 @@ useHead({
const groupMemberships = computed((): (string | undefined)[] => {
if (!person.value || !person.value.id) return [];
return person.value.memberships.elements
return (person.value.memberships?.elements ?? [])
.filter(
(membership: IMember) =>
![

View File

@@ -649,7 +649,7 @@ const FullAddressAutoComplete = defineAsyncComponent(
// },
// },
// group: {
// query: FETCH_GROUP,
// query: FETCH_GROUP_PUBLIC,
// fetchPolicy: "cache-and-network",
// variables() {
// return {

View File

@@ -73,9 +73,9 @@
t(
"{count} members",
{
count: group.members.total,
count: group.members?.total,
},
group.members.total
group.members?.total
)
}}
<router-link
@@ -388,9 +388,9 @@
<!-- Private things -->
<div class="flex-1 m-0 flex flex-col flex-wrap gap-2">
<!-- Group discussions -->
<Discussions :group="group" class="flex-1" />
<Discussions :group="discussionGroup ?? group" class="flex-1" />
<!-- Resources -->
<Resources :group="group" class="flex-1" />
<Resources :group="resourcesGroup ?? group" class="flex-1" />
</div>
<!-- Public things -->
<div class="flex-1 m-0 flex flex-col flex-wrap gap-2">
@@ -452,9 +452,9 @@
t(
"{count} members",
{
count: group.members.total,
count: group.members?.total,
},
group.members.total
group.members?.total
)
}}
</event-metadata-block>
@@ -671,6 +671,7 @@ import { useAnonymousReportsConfig } from "../../composition/apollo/config";
import { computed, defineAsyncComponent, inject, ref, watch } from "vue";
import { useCurrentActorClient } from "@/composition/apollo/actor";
import { useGroup, useLeaveGroup } from "@/composition/apollo/group";
import { useGroupDiscussionsList } from "@/composition/apollo/discussions";
import { useRouter } from "vue-router";
import { useMutation, useQuery } from "@vue/apollo-composable";
import AccountGroup from "vue-material-design-icons/AccountGroup.vue";
@@ -691,6 +692,7 @@ import Posts from "@/components/Group/Sections/PostsSection.vue";
import Events from "@/components/Group/Sections/EventsSection.vue";
import { Dialog } from "@/plugins/dialog";
import { Notifier } from "@/plugins/notifier";
import { useGroupResourcesList } from "@/composition/apollo/resources";
const props = defineProps<{
preferredUsername: string;
@@ -705,6 +707,14 @@ const {
} = useGroup(props.preferredUsername, { afterDateTime: new Date() });
const router = useRouter();
const { group: discussionGroup } = useGroupDiscussionsList(
props.preferredUsername
);
const { group: resourcesGroup } = useGroupResourcesList(
props.preferredUsername,
{ resourcesPage: 1, resourcesLimit: 3 }
);
const { t } = useI18n({ useScope: "global" });
// const { person } = usePersonStatusGroup(group);
@@ -1037,7 +1047,7 @@ const isCurrentActorOnADifferentDomainThanGroup = computed((): boolean => {
const members = computed((): IMember[] => {
return (
group.value?.members.elements.filter(
(group.value?.members?.elements ?? []).filter(
(member: IMember) =>
![
MemberRole.INVITED,

View File

@@ -290,7 +290,10 @@ const { result: membershipsResult, loading: membershipsLoading } = useQuery<{
}>(
PERSON_MEMBERSHIPS,
() => ({ id: currentActor.value?.id }),
() => ({ enabled: currentActor.value?.id !== undefined })
() => ({
enabled:
currentActor.value?.id !== undefined && currentActor.value?.id !== null,
})
);
const memberships = computed(() => membershipsResult.value?.person.memberships);

View File

@@ -106,7 +106,7 @@
variant="text"
:to="{
name: RouteName.REGISTER,
params: {
query: {
default_email: credentials.email,
default_password: credentials.password,
},
@@ -143,14 +143,6 @@ import { LoginError, LoginErrorCode } from "@/types/enums";
import { useCurrentUserClient } from "@/composition/apollo/user";
import { useHead } from "@vueuse/head";
const props = withDefaults(
defineProps<{
email?: string;
password?: string;
}>(),
{ email: "", password: "" }
);
const { t } = useI18n({ useScope: "global" });
const router = useRouter();
const route = useRoute();
@@ -177,8 +169,9 @@ const errors = ref<string[]>([]);
const submitted = ref(false);
const credentials = reactive({
email: "",
password: "",
email: typeof route.query.email === "string" ? route.query.email : "",
password:
typeof route.query.password === "string" ? route.query.password : "",
});
const redirect = ref<string | undefined>("");
@@ -298,9 +291,6 @@ const currentProvider = computed(() => {
});
onMounted(() => {
credentials.email = props.email;
credentials.password = props.password;
const query = route?.query;
errorCode.value = query?.code as LoginErrorCode;
redirect.value = query?.redirect as string | undefined;

View File

@@ -181,7 +181,7 @@
variant="text"
:to="{
name: RouteName.LOGIN,
params: {
query: {
email: credentials.email,
password: credentials.password,
},
@@ -212,7 +212,7 @@ import AuthProviders from "../../components/User/AuthProviders.vue";
import { computed, reactive, ref, watch } from "vue";
import { useMutation, useQuery } from "@vue/apollo-composable";
import { useI18n } from "vue-i18n";
import { useRouter } from "vue-router";
import { useRoute, useRouter } from "vue-router";
import { useHead } from "@vueuse/head";
import { AbsintheGraphQLErrors } from "@/types/errors.model";
@@ -221,6 +221,7 @@ type errorMessage = { type: errorType; message: string };
type credentialsType = { email: string; password: string; locale: string };
const { t, locale } = useI18n({ useScope: "global" });
const route = useRoute();
const router = useRouter();
const { result: configResult } = useQuery<{ config: IConfig }>(CONFIG);
@@ -229,17 +230,10 @@ const config = computed(() => configResult.value?.config);
const showGravatar = ref(false);
const props = withDefaults(
defineProps<{
email?: string;
password?: string;
}>(),
{ email: "", password: "" }
);
const credentials = reactive<credentialsType>({
email: props.email,
password: props.password,
email: typeof route.query.email === "string" ? route.query.email : "",
password:
typeof route.query.password === "string" ? route.query.password : "",
locale: "en",
});