From ea4116c207709ef0286500b27b0f36c18403aa50 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 29 Oct 2021 10:54:35 +0200 Subject: [PATCH] Refactor GraphQL queries and event cards Signed-off-by: Thomas Citharel --- js/src/components/Event/EventCard.vue | 89 ++++++++-- js/src/components/Event/MultiCard.vue | 46 ++++++ js/src/components/Image/LazyImage.vue | 12 +- js/src/components/NavBar.vue | 8 +- js/src/graphql/actor.ts | 229 ++++++-------------------- js/src/graphql/admin.ts | 26 +-- js/src/graphql/comment.ts | 12 +- js/src/graphql/discussion.ts | 66 ++------ js/src/graphql/event.ts | 129 ++++++--------- js/src/graphql/followers.ts | 16 +- js/src/graphql/group.ts | 94 +++-------- js/src/graphql/home.ts | 2 +- js/src/graphql/member.ts | 36 +--- js/src/graphql/post.ts | 44 +---- js/src/graphql/report.ts | 82 ++------- js/src/graphql/resources.ts | 7 +- js/src/graphql/search.ts | 34 +--- js/src/graphql/todos.ts | 26 +-- js/src/graphql/user.ts | 38 +---- js/src/i18n/en_US.json | 11 +- js/src/i18n/es.json | 1 - js/src/i18n/fr_FR.json | 11 +- js/src/types/event.model.ts | 20 ++- js/src/views/Admin/Follows.vue | 2 +- js/src/views/Event/Event.vue | 17 +- js/src/views/Group/Group.vue | 2 +- js/src/views/Posts/Edit.vue | 2 +- 27 files changed, 376 insertions(+), 686 deletions(-) create mode 100644 js/src/components/Event/MultiCard.vue diff --git a/js/src/components/Event/EventCard.vue b/js/src/components/Event/EventCard.vue index 127adddf..80ab6e0d 100644 --- a/js/src/components/Event/EventCard.vue +++ b/js/src/components/Event/EventCard.vue @@ -40,6 +40,22 @@

{{ event.title }}

+
+
+ +
+ + + {{ organizerDisplayName(event) }} + +
- + {{ event.physicalAddress.description }}, {{ event.physicalAddress.locality }} @@ -58,6 +74,13 @@ {{ event.physicalAddress.description }}
+
+ + {{ $t("Online") }} +
@@ -100,7 +123,12 @@ + diff --git a/js/src/components/Image/LazyImage.vue b/js/src/components/Image/LazyImage.vue index c5d95b7f..22674bd2 100644 --- a/js/src/components/Image/LazyImage.vue +++ b/js/src/components/Image/LazyImage.vue @@ -63,12 +63,14 @@ export default class LazyImage extends Vue { onEnter(): void { // Image is visible (means: has entered the viewport), // so start loading by setting the src attribute - this.image.src = this.src; + if (this.image) { + this.image.src = this.src; - this.image.onload = () => { - // Image is loaded, so start fading in - this.isLoaded = true; - }; + this.image.onload = () => { + // Image is loaded, so start fading in + this.isLoaded = true; + }; + } } @Watch("src") diff --git a/js/src/components/NavBar.vue b/js/src/components/NavBar.vue index b23f93d1..3c636ed3 100644 --- a/js/src/components/NavBar.vue +++ b/js/src/components/NavBar.vue @@ -208,12 +208,8 @@ import RouteName from "../router/name"; @Component({ apollo: { - currentUser: { - query: CURRENT_USER_CLIENT, - }, - currentActor: { - query: CURRENT_ACTOR_CLIENT, - }, + currentUser: CURRENT_USER_CLIENT, + currentActor: CURRENT_ACTOR_CLIENT, identities: { query: IDENTITIES, update: ({ identities }) => diff --git a/js/src/graphql/actor.ts b/js/src/graphql/actor.ts index eaf444e8..427690f0 100644 --- a/js/src/graphql/actor.ts +++ b/js/src/graphql/actor.ts @@ -1,14 +1,25 @@ import gql from "graphql-tag"; +export const ACTOR_FRAGMENT = gql` + fragment ActorFragment on Actor { + id + avatar { + id + url + } + type + preferredUsername + name + domain + summary + url + } +`; + export const FETCH_PERSON = gql` query ($username: String!) { fetchPerson(preferredUsername: $username) { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended mediaSize avatar { @@ -34,6 +45,7 @@ export const FETCH_PERSON = gql` } } } + ${ACTOR_FRAGMENT} `; export const GET_PERSON = gql` @@ -47,12 +59,7 @@ export const GET_PERSON = gql` $membershipsLimit: Int ) { person(id: $actorId) { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended mediaSize avatar { @@ -98,14 +105,7 @@ export const GET_PERSON = gql` role insertedAt parent { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } } } @@ -115,6 +115,7 @@ export const GET_PERSON = gql` } } } + ${ACTOR_FRAGMENT} `; export const PERSON_FRAGMENT = gql` @@ -126,6 +127,7 @@ export const PERSON_FRAGMENT = gql` } type preferredUsername + domain name } `; @@ -151,17 +153,11 @@ export const LIST_PROFILES = gql` ) { total elements { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_DEFAULT_ACTOR = gql` @@ -179,12 +175,9 @@ export const CURRENT_ACTOR_CLIENT = gql` query currentActor { currentActor @client { id - avatar { - id - url - } preferredUsername name + avatar } } `; @@ -234,27 +227,10 @@ export const LOGGED_USER_PARTICIPATIONS = gql` beginsOn visibility organizerActor { - id - preferredUsername - name - domain - summary - avatar { - id - url - } + ...ActorFragment } attributedTo { - avatar { - id - url - } - preferredUsername - name - summary - domain - url - id + ...ActorFragment } participantStats { going @@ -274,20 +250,13 @@ export const LOGGED_USER_PARTICIPATIONS = gql` id role actor { - id - preferredUsername - name - domain - summary - avatar { - id - url - } + ...ActorFragment } } } } } + ${ACTOR_FRAGMENT} `; export const LOGGED_USER_DRAFTS = gql` @@ -306,14 +275,7 @@ export const LOGGED_USER_DRAFTS = gql` beginsOn visibility organizerActor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } participantStats { going @@ -326,6 +288,7 @@ export const LOGGED_USER_DRAFTS = gql` } } } + ${ACTOR_FRAGMENT} `; export const LOGGED_USER_MEMBERSHIPS = gql` @@ -338,25 +301,10 @@ export const LOGGED_USER_MEMBERSHIPS = gql` id role actor { - id - avatar { - id - url - } - preferredUsername - name - domain + ...ActorFragment } parent { - id - preferredUsername - domain - name - type - avatar { - id - url - } + ...ActorFragment organizedEvents { elements { id @@ -370,34 +318,22 @@ export const LOGGED_USER_MEMBERSHIPS = gql` } } invitedBy { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } } } } + ${ACTOR_FRAGMENT} `; export const IDENTITIES = gql` query Identities { identities { - id - avatar { - id - url - } - type - preferredUsername - name + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const PERSON_MEMBERSHIPS = gql` @@ -410,20 +346,10 @@ export const PERSON_MEMBERSHIPS = gql` id role parent { - id - preferredUsername - name - domain - type - avatar { - id - url - } + ...ActorFragment } invitedBy { - id - preferredUsername - name + ...ActorFragment } insertedAt updatedAt @@ -431,6 +357,7 @@ export const PERSON_MEMBERSHIPS = gql` } } } + ${ACTOR_FRAGMENT} `; export const PERSON_STATUS_GROUP = gql` @@ -443,19 +370,10 @@ export const PERSON_STATUS_GROUP = gql` id role parent { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } invitedBy { - id - preferredUsername - name + ...ActorFragment } insertedAt updatedAt @@ -468,24 +386,10 @@ export const PERSON_STATUS_GROUP = gql` notify approved target_actor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } actor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } insertedAt updatedAt @@ -493,6 +397,7 @@ export const PERSON_STATUS_GROUP = gql` } } } + ${ACTOR_FRAGMENT} `; export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` @@ -508,19 +413,10 @@ export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` id role parent { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } invitedBy { - id - preferredUsername - name + ...ActorFragment } insertedAt updatedAt @@ -528,6 +424,7 @@ export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` } } } + ${ACTOR_FRAGMENT} `; export const CREATE_PERSON = gql` @@ -543,16 +440,10 @@ export const CREATE_PERSON = gql` summary: $summary avatar: $avatar ) { - id - preferredUsername - name - summary - avatar { - id - url - } + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const UPDATE_PERSON = gql` @@ -563,16 +454,10 @@ export const UPDATE_PERSON = gql` $avatar: MediaInput ) { updatePerson(id: $id, name: $name, summary: $summary, avatar: $avatar) { - id - preferredUsername - name - summary - avatar { - id - url - } + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const DELETE_PERSON = gql` @@ -600,16 +485,10 @@ export const REGISTER_PERSON = gql` summary: $summary email: $email ) { - id - preferredUsername - name - summary - avatar { - id - url - } + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const SUSPEND_PROFILE = gql` diff --git a/js/src/graphql/admin.ts b/js/src/graphql/admin.ts index 5dac4ea0..acb3f73b 100644 --- a/js/src/graphql/admin.ts +++ b/js/src/graphql/admin.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const DASHBOARD = gql` query { @@ -14,14 +15,7 @@ export const DASHBOARD = gql` } } lastGroupCreated { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } numberOfUsers numberOfEvents @@ -33,31 +27,23 @@ export const DASHBOARD = gql` numberOfConfirmedParticipationsToLocalEvents } } + ${ACTOR_FRAGMENT} `; export const RELAY_FRAGMENT = gql` fragment relayFragment on Follower { id actor { - id - preferredUsername - name - domain - type - summary + ...ActorFragment } targetActor { - id - preferredUsername - name - domain - type - summary + ...ActorFragment } approved insertedAt updatedAt } + ${ACTOR_FRAGMENT} `; export const RELAY_FOLLOWERS = gql` diff --git a/js/src/graphql/comment.ts b/js/src/graphql/comment.ts index dd6b6df4..350a9cf3 100644 --- a/js/src/graphql/comment.ts +++ b/js/src/graphql/comment.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const COMMENT_FIELDS_FRAGMENT_NAME = "CommentFields"; export const COMMENT_FIELDS_FRAGMENT = gql` @@ -10,15 +11,7 @@ export const COMMENT_FIELDS_FRAGMENT = gql` visibility local actor { - avatar { - id - url - } - id - domain - preferredUsername - name - summary + ...ActorFragment } totalReplies insertedAt @@ -26,6 +19,7 @@ export const COMMENT_FIELDS_FRAGMENT = gql` deletedAt isAnnouncement } + ${ACTOR_FRAGMENT} `; export const COMMENT_RECURSIVE_FRAGMENT = gql` diff --git a/js/src/graphql/discussion.ts b/js/src/graphql/discussion.ts index ef66d22c..1d14933b 100644 --- a/js/src/graphql/discussion.ts +++ b/js/src/graphql/discussion.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const DISCUSSION_BASIC_FIELDS_FRAGMENT = gql` fragment DiscussionBasicFields on Discussion { @@ -11,18 +12,13 @@ export const DISCUSSION_BASIC_FIELDS_FRAGMENT = gql` id text actor { - id - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } publishedAt deletedAt } } + ${ACTOR_FRAGMENT} `; export const DISCUSSION_FIELDS_FOR_REPLY_FRAGMENT = gql` @@ -35,26 +31,17 @@ export const DISCUSSION_FIELDS_FOR_REPLY_FRAGMENT = gql` text updatedAt actor { - id - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } } actor { - id - preferredUsername - domain + ...ActorFragment } creator { - id - preferredUsername - domain + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const DISCUSSION_FIELDS_FRAGMENT = gql` @@ -70,28 +57,17 @@ export const DISCUSSION_FIELDS_FRAGMENT = gql` deletedAt publishedAt actor { - id - domain - name - preferredUsername - avatar { - url - } + ...ActorFragment } } actor { - id - domain - name - preferredUsername + ...ActorFragment } creator { - id - domain - name - preferredUsername + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const CREATE_DISCUSSION = gql` @@ -121,14 +97,7 @@ export const GET_DISCUSSION = gql` id text actor { - id - avatar { - id - url - } - name - domain - preferredUsername + ...ActorFragment } insertedAt updatedAt @@ -140,6 +109,7 @@ export const GET_DISCUSSION = gql` } } ${DISCUSSION_FIELDS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const UPDATE_DISCUSSION = gql` @@ -171,16 +141,10 @@ export const DISCUSSION_COMMENT_CHANGED = gql` deletedAt publishedAt actor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } } } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/event.ts b/js/src/graphql/event.ts index 7f3e52ad..10d8aefb 100644 --- a/js/src/graphql/event.ts +++ b/js/src/graphql/event.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; import { ADDRESS_FRAGMENT } from "./address"; import { TAG_FRAGMENT } from "./tags"; @@ -7,14 +8,7 @@ const PARTICIPANT_QUERY_FRAGMENT = gql` role id actor { - preferredUsername - avatar { - id - url - } - name - id - domain + ...ActorFragment } event { id @@ -26,6 +20,7 @@ const PARTICIPANT_QUERY_FRAGMENT = gql` } insertedAt } + ${ACTOR_FRAGMENT} `; const PARTICIPANTS_QUERY_FRAGMENT = gql` @@ -38,7 +33,7 @@ const PARTICIPANTS_QUERY_FRAGMENT = gql` ${PARTICIPANT_QUERY_FRAGMENT} `; -const EVENT_OPTIONS_FRAGMENT = gql` +export const EVENT_OPTIONS_FRAGMENT = gql` fragment EventOptions on EventOptions { maximumAttendeeCapacity remainingAttendeeCapacity @@ -97,40 +92,13 @@ const FULL_EVENT_FRAGMENT = gql` ...AdressFragment } organizerActor { - avatar { - id - url - } - preferredUsername - domain - name - url - id - summary + ...ActorFragment } contacts { - avatar { - id - url - } - preferredUsername - name - summary - domain - url - id + ...ActorFragment } attributedTo { - avatar { - id - url - } - preferredUsername - name - summary - domain - url - id + ...ActorFragment } participantStats { going @@ -156,18 +124,19 @@ const FULL_EVENT_FRAGMENT = gql` } } physicalAddress { - id - description + ...AdressFragment } organizerActor { - id - avatar { - id - url - } - preferredUsername - domain - name + ...ActorFragment + } + attributedTo { + ...ActorFragment + } + options { + ...EventOptions + } + tags { + ...TagFragment } } options { @@ -183,6 +152,7 @@ const FULL_EVENT_FRAGMENT = gql` ${ADDRESS_FRAGMENT} ${TAG_FRAGMENT} ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const FETCH_EVENT = gql` @@ -244,36 +214,28 @@ export const FETCH_EVENTS = gql` # online_address, # phone_address, physicalAddress { - id - description - locality + ...AdressFragment } organizerActor { - id - avatar { - id - url - } - preferredUsername - domain - name + ...ActorFragment } attributedTo { - avatar { - id - url - } - preferredUsername - name + ...ActorFragment } category tags { ...TagFragment } + options { + ...EventOptions + } } } } + ${ADDRESS_FRAGMENT} ${TAG_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const CREATE_EVENT = gql` @@ -514,10 +476,7 @@ export const FETCH_GROUP_EVENTS = gql` $organisedEventslimit: Int ) { group(preferredUsername: $name) { - id - preferredUsername - domain - name + ...ActorFragment organizedEvents( afterDatetime: $afterDateTime beforeDatetime: $beforeDateTime @@ -538,22 +497,17 @@ export const FETCH_GROUP_EVENTS = gql` notApproved } attributedTo { - id - preferredUsername - name - domain + ...ActorFragment } organizerActor { - id - preferredUsername - name - domain + ...ActorFragment } } total } } } + ${ACTOR_FRAGMENT} `; export const CLOSE_EVENTS = gql` @@ -570,13 +524,28 @@ export const CLOSE_EVENTS = gql` url } tags { - slug - title + ...TagFragment + } + options { + ...EventOptions + } + physicalAddress { + ...AdressFragment + } + attributedTo { + ...ActorFragment + } + organizerActor { + ...ActorFragment } __typename } } } + ${ADDRESS_FRAGMENT} + ${TAG_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const EXPORT_EVENT_PARTICIPATIONS = gql` diff --git a/js/src/graphql/followers.ts b/js/src/graphql/followers.ts index cc43afe0..c72f67e0 100644 --- a/js/src/graphql/followers.ts +++ b/js/src/graphql/followers.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const GROUP_FOLLOWERS = gql` query ( @@ -8,10 +9,7 @@ export const GROUP_FOLLOWERS = gql` $approved: Boolean ) { group(preferredUsername: $name) { - id - preferredUsername - name - domain + ...ActorFragment followers( page: $followersPage limit: $followersLimit @@ -21,14 +19,7 @@ export const GROUP_FOLLOWERS = gql` elements { id actor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } approved insertedAt @@ -37,6 +28,7 @@ export const GROUP_FOLLOWERS = gql` } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_FOLLOWER = gql` diff --git a/js/src/graphql/group.ts b/js/src/graphql/group.ts index eea47ede..09a70232 100644 --- a/js/src/graphql/group.ts +++ b/js/src/graphql/group.ts @@ -2,6 +2,7 @@ import gql from "graphql-tag"; import { DISCUSSION_BASIC_FIELDS_FRAGMENT } from "./discussion"; import { RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT } from "./resources"; import { POST_BASIC_FIELDS } from "./post"; +import { ACTOR_FRAGMENT } from "./actor"; export const LIST_GROUPS = gql` query ListGroups( @@ -23,12 +24,7 @@ export const LIST_GROUPS = gql` limit: $limit ) { elements { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended avatar { id @@ -51,16 +47,12 @@ export const LIST_GROUPS = gql` total } } + ${ACTOR_FRAGMENT} `; export const GROUP_FIELDS_FRAGMENTS = gql` fragment GroupFullFields on Group { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended visibility openness @@ -117,16 +109,10 @@ export const GROUP_FIELDS_FRAGMENTS = gql` notApproved } attributedTo { - id - preferredUsername - name - domain + ...ActorFragment } organizerActor { - id - preferredUsername - name - domain + ...ActorFragment } } total @@ -148,14 +134,7 @@ export const GROUP_FIELDS_FRAGMENTS = gql` id role actor { - id - name - domain - preferredUsername - avatar { - id - url - } + ...ActorFragment } insertedAt } @@ -197,6 +176,7 @@ export const GROUP_FIELDS_FRAGMENTS = gql` total } } + ${ACTOR_FRAGMENT} `; export const FETCH_GROUP = gql` @@ -263,21 +243,14 @@ export const CREATE_GROUP = gql` banner: $banner avatar: $avatar ) { - id - preferredUsername - name - domain - summary - avatar { - id - url - } + ...ActorFragment banner { id url } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_GROUP = gql` @@ -303,23 +276,17 @@ export const UPDATE_GROUP = gql` physicalAddress: $physicalAddress manuallyApprovesFollowers: $manuallyApprovesFollowers ) { - id - preferredUsername - name - summary + ...ActorFragment visibility openness manuallyApprovesFollowers - avatar { - id - url - } banner { id url } } } + ${ACTOR_FRAGMENT} `; export const DELETE_GROUP = gql` @@ -355,10 +322,7 @@ export const GROUP_TIMELINE = gql` $limit: Int ) { group(preferredUsername: $preferredUsername) { - id - preferredUsername - domain - name + ...ActorFragment activity(type: $type, author: $author, page: $page, limit: $limit) { total elements { @@ -371,18 +335,10 @@ export const GROUP_TIMELINE = gql` } type author { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } group { - id - preferredUsername + ...ActorFragment } object { ... on Event { @@ -396,14 +352,7 @@ export const GROUP_TIMELINE = gql` ... on Member { id actor { - id - name - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } } ... on Resource { @@ -421,11 +370,7 @@ export const GROUP_TIMELINE = gql` id } ... on Group { - id - preferredUsername - domain - name - summary + ...ActorFragment visibility openness physicalAddress { @@ -433,9 +378,7 @@ export const GROUP_TIMELINE = gql` } banner { id - } - avatar { - id + url } } } @@ -443,4 +386,5 @@ export const GROUP_TIMELINE = gql` } } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/home.ts b/js/src/graphql/home.ts index 93cbdcfa..e5a059ec 100644 --- a/js/src/graphql/home.ts +++ b/js/src/graphql/home.ts @@ -62,7 +62,7 @@ export const HOME_USER_QUERIES = gql` } } } - followGroupEvents { + followedGroupEvents { total elements { profile { diff --git a/js/src/graphql/member.ts b/js/src/graphql/member.ts index 305ae723..bf6bda44 100644 --- a/js/src/graphql/member.ts +++ b/js/src/graphql/member.ts @@ -1,31 +1,19 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const MEMBER_FRAGMENT = gql` fragment MemberFragment on Member { id role parent { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } actor { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } insertedAt } + ${ACTOR_FRAGMENT} `; export const INVITE_MEMBER = gql` @@ -57,24 +45,13 @@ export const REJECT_INVITATION = gql` export const GROUP_MEMBERS = gql` query ($name: String!, $roles: String, $page: Int, $limit: Int) { group(preferredUsername: $name) { - id - url - name - domain - preferredUsername + ...ActorFragment members(page: $page, limit: $limit, roles: $roles) { elements { id role actor { - id - name - domain - preferredUsername - avatar { - id - url - } + ...ActorFragment } insertedAt } @@ -82,6 +59,7 @@ export const GROUP_MEMBERS = gql` } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_MEMBER = gql` diff --git a/js/src/graphql/post.ts b/js/src/graphql/post.ts index 556fe01f..54ec058b 100644 --- a/js/src/graphql/post.ts +++ b/js/src/graphql/post.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; import { TAG_FRAGMENT } from "./tags"; export const POST_FRAGMENT = gql` @@ -10,24 +11,10 @@ export const POST_FRAGMENT = gql` body draft author { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } attributedTo { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } insertedAt updatedAt @@ -49,6 +36,7 @@ export const POST_FRAGMENT = gql` } } ${TAG_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const POST_BASIC_FIELDS = gql` @@ -58,24 +46,10 @@ export const POST_BASIC_FIELDS = gql` slug url author { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } attributedTo { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } insertedAt updatedAt @@ -88,15 +62,13 @@ export const POST_BASIC_FIELDS = gql` name } } + ${ACTOR_FRAGMENT} `; export const FETCH_GROUP_POSTS = gql` query GroupPosts($preferredUsername: String!, $page: Int, $limit: Int) { group(preferredUsername: $preferredUsername) { - id - preferredUsername - domain - name + ...ActorFragment posts(page: $page, limit: $limit) { total elements { diff --git a/js/src/graphql/report.ts b/js/src/graphql/report.ts index bc842070..3fcffe8e 100644 --- a/js/src/graphql/report.ts +++ b/js/src/graphql/report.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const REPORTS = gql` query Reports($status: ReportStatus, $page: Int, $limit: Int) { @@ -7,25 +8,10 @@ export const REPORTS = gql` elements { id reported { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } reporter { - id - preferredUsername - name - avatar { - id - url - } - domain - type + ...ActorFragment } event { id @@ -41,31 +27,17 @@ export const REPORTS = gql` } } } + ${ACTOR_FRAGMENT} `; const REPORT_FRAGMENT = gql` fragment ReportFragment on Report { id reported { - id - preferredUsername - name - avatar { - id - url - } - domain + ...ActorFragment } reporter { - id - preferredUsername - name - avatar { - id - url - } - domain - type + ...ActorFragment } event { id @@ -81,27 +53,14 @@ const REPORT_FRAGMENT = gql` id text actor { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } notes { id content moderator { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } insertedAt } @@ -110,6 +69,7 @@ const REPORT_FRAGMENT = gql` status content } + ${ACTOR_FRAGMENT} `; export const REPORT = gql` @@ -167,13 +127,7 @@ export const LOGS = gql` id action actor { - id - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } object { ... on Report { @@ -197,23 +151,14 @@ export const LOGS = gql` uuid } actor { - id - preferredUsername - domain - name + ...ActorFragment } } ... on Person { - id - preferredUsername - domain - name + ...ActorFragment } ... on Group { - id - preferredUsername - domain - name + ...ActorFragment } ... on User { id @@ -226,4 +171,5 @@ export const LOGS = gql` total } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/resources.ts b/js/src/graphql/resources.ts index 44d1168f..ecc5523e 100644 --- a/js/src/graphql/resources.ts +++ b/js/src/graphql/resources.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT = gql` fragment ResourceMetadataBasicFields on ResourceMetadata { @@ -38,10 +39,7 @@ export const GET_RESOURCE = gql` type } actor { - id - preferredUsername - name - domain + ...ActorFragment } children(page: $page, limit: $limit) { total @@ -68,6 +66,7 @@ export const GET_RESOURCE = gql` } } } + ${ACTOR_FRAGMENT} ${RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT} `; diff --git a/js/src/graphql/search.ts b/js/src/graphql/search.ts index 042fdf92..b2f18ec6 100644 --- a/js/src/graphql/search.ts +++ b/js/src/graphql/search.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const SEARCH_EVENTS = gql` query SearchEvents( @@ -58,18 +59,11 @@ export const SEARCH_GROUPS = gql` ) { total elements { - id - avatar { - id - url - } - domain - preferredUsername - name - __typename + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const SEARCH_PERSONS = gql` @@ -77,18 +71,11 @@ export const SEARCH_PERSONS = gql` searchPersons(term: $searchText, page: $page, limit: $limit) { total elements { - id - avatar { - id - url - } - domain - preferredUsername - name - __typename + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const INTERACT = gql` @@ -110,16 +97,9 @@ export const INTERACT = gql` __typename } ... on Group { - id - avatar { - id - url - } - domain - preferredUsername - name - __typename + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/todos.ts b/js/src/graphql/todos.ts index dd3502ad..cc704339 100644 --- a/js/src/graphql/todos.ts +++ b/js/src/graphql/todos.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const GET_TODO = gql` query GetTodo($id: ID!) { @@ -9,26 +10,17 @@ export const GET_TODO = gql` dueDate todoList { actor { - id - preferredUsername - domain - name + ...ActorFragment } title id } assignedTo { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const FETCH_TODO_LIST = gql` @@ -43,21 +35,17 @@ export const FETCH_TODO_LIST = gql` title status assignedTo { - id - preferredUsername - domain + ...ActorFragment } dueDate } } actor { - id - preferredUsername - domain - name + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const CREATE_TODO_LIST = gql` diff --git a/js/src/graphql/user.ts b/js/src/graphql/user.ts index 0f0e7e37..8d0a8bce 100644 --- a/js/src/graphql/user.ts +++ b/js/src/graphql/user.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const CREATE_USER = gql` mutation CreateUser($email: String!, $password: String!, $locale: String) { @@ -18,17 +19,12 @@ export const VALIDATE_USER = gql` id email defaultActor { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } } } } + ${ACTOR_FRAGMENT} `; export const LOGGED_USER = gql` @@ -37,17 +33,12 @@ export const LOGGED_USER = gql` id email defaultActor { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } provider } } + ${ACTOR_FRAGMENT} `; export const CHANGE_PASSWORD = gql` @@ -228,14 +219,7 @@ export const LIST_USERS = gql` confirmedAt disabled actors { - id - preferredUsername - avatar { - id - url - } - name - summary + ...ActorFragment } settings { timezone @@ -243,6 +227,7 @@ export const LIST_USERS = gql` } } } + ${ACTOR_FRAGMENT} `; export const GET_USER = gql` @@ -263,13 +248,7 @@ export const GET_USER = gql` id } actors { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } participations { total @@ -277,6 +256,7 @@ export const GET_USER = gql` role } } + ${ACTOR_FRAGMENT} `; export const UPDATE_USER_LOCALE = gql` diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index d7027ea8..29d566f6 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1202,6 +1202,13 @@ "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})", "Back to top": "Back to top", "Powered by Mobilizon": "Powered by Mobilizon", - "Instance follows": "Instance follows", - "The event is fully online": "The event is fully online" + "The event is fully online": "The event is fully online", + "Follow": "Follow", + "Cancel follow request": "Cancel follow request", + "Unfollow": "Unfollow", + "your notification settings": "your notification settings", + "You will receive notifications about this group's public activity depending on %{notification_settings}.": "You will receive notifications about this group's public activity depending on %{notification_settings}.", + "Recent events from your groups": "Recent events from your groups", + "Online": "Online", + "That you follow or of which you are a member": "That you follow or of which you are a member" } diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index c1e97c9a..9eba4826 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -488,7 +488,6 @@ "Instance administrator": "Administrador de instancia", "Instance configuration": "Configuración de instancia", "Instance feeds": "Flujos de instancias", - "Instance follows": "La instancia sigue", "Instance languages": "Idiomas de instancia", "Instance rules": "Reglas de instancia", "Instance settings": "Configuraciones de instancia", diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index d29910fc..fb97c197 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1308,6 +1308,13 @@ "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})", "Back to top": "Retour en haut", "Powered by Mobilizon": "Propulsé par Mobilizon", - "Instance follows": "Abonnements de l'instance", - "The event is fully online": "L'événement est entièrement en ligne" + "The event is fully online": "L'événement est entièrement en ligne", + "Follow": "Suivre", + "Cancel follow request": "Annuler la demande de suivi", + "Unfollow": "Ne plus suivre", + "your notification settings": "vos paramètres de notification", + "You will receive notifications about this group's public activity depending on %{notification_settings}.": "Vous recevrez des notifications à propos de l'activité publique de ce groupe en fonction de %{notification_settings}.", + "Recent events from your groups": "Événements récents de vos groupes", + "Online": "En ligne", + "That you follow or of which you are a member": "Que vous suivez ou dont vous êtes membre" } diff --git a/js/src/types/event.model.ts b/js/src/types/event.model.ts index 4574e2d3..e96c2601 100644 --- a/js/src/types/event.model.ts +++ b/js/src/types/event.model.ts @@ -4,7 +4,7 @@ import type { ITag } from "@/types/tag.model"; import type { IMedia } from "@/types/media.model"; import type { IComment } from "@/types/comment.model"; import type { Paginate } from "@/types/paginate"; -import { Actor, Group } from "./actor"; +import { Actor, displayName, Group } from "./actor"; import type { IActor, IGroup, IPerson } from "./actor"; import type { IParticipant } from "./participant.model"; import { EventOptions } from "./event-options.model"; @@ -257,3 +257,21 @@ export function toEditJSON(event: IEditableEvent): IEventEditJSON { })), }; } + +export function organizer(event: IEvent): IActor | null { + if (event.attributedTo) { + return event.attributedTo; + } + if (event.organizerActor) { + return event.organizerActor; + } + return null; +} + +export function organizerDisplayName(event: IEvent): string | null { + const organizerActor = organizer(event); + if (organizerActor) { + return displayName(organizerActor); + } + return null; +} diff --git a/js/src/views/Admin/Follows.vue b/js/src/views/Admin/Follows.vue index 50ce67eb..aae1acec 100644 --- a/js/src/views/Admin/Follows.vue +++ b/js/src/views/Admin/Follows.vue @@ -89,7 +89,7 @@ import RouteName from "../../router/name"; }, metaInfo() { return { - title: this.$t("Instance follows") as string, + title: this.$t("Federation") as string, }; }, }) diff --git a/js/src/views/Event/Event.vue b/js/src/views/Event/Event.vue index 609223fb..3756830e 100755 --- a/js/src/views/Event/Event.vue +++ b/js/src/views/Event/Event.vue @@ -345,15 +345,7 @@

{{ $t("These events may interest you") }}

-
-
- -
-
+