mobilizon/js/src/graphql/group.ts

428 lines
8.0 KiB
TypeScript
Raw Normal View History

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";
import { ADDRESS_FRAGMENT } from "./address";
import { TAG_FRAGMENT } from "./tags";
import { EVENT_OPTIONS_FRAGMENT } from "./event_options";
export const LIST_GROUPS = gql`
query ListGroups(
$preferredUsername: String
$name: String
$domain: String
$local: Boolean
$suspended: Boolean
$page: Int
$limit: Int
) {
groups(
preferredUsername: $preferredUsername
name: $name
domain: $domain
local: $local
suspended: $suspended
page: $page
limit: $limit
) {
elements {
...ActorFragment
suspended
avatar {
id
url
}
banner {
id
url
}
organizedEvents {
elements {
id
uuid
title
beginsOn
}
total
}
}
total
}
}
${ACTOR_FRAGMENT}
`;
export const GROUP_FIELDS_FRAGMENTS = gql`
fragment GroupFullFields on Group {
...ActorFragment
suspended
visibility
openness
manuallyApprovesFollowers
physicalAddress {
description
street
locality
postalCode
region
country
geom
type
id
originId
url
}
avatar {
id
url
name
metadata {
width
height
blurhash
}
}
banner {
id
url
name
metadata {
width
height
blurhash
}
}
organizedEvents(
afterDatetime: $afterDateTime
beforeDatetime: $beforeDateTime
page: $organisedEventsPage
limit: $organisedEventsLimit
) {
elements {
id
uuid
title
beginsOn
draft
language
options {
maximumAttendeeCapacity
}
participantStats {
participant
notApproved
}
attributedTo {
...ActorFragment
}
organizerActor {
...ActorFragment
}
picture {
id
url
}
physicalAddress {
...AdressFragment
}
options {
...EventOptions
}
tags {
...TagFragment
}
}
total
}
discussions(page: $discussionsPage, limit: $discussionsLimit) {
total
elements {
...DiscussionBasicFields
}
}
posts(page: $postsPage, limit: $postsLimit) {
total
elements {
...PostBasicFields
}
}
members(page: $membersPage, limit: $membersLimit) {
elements {
id
role
actor {
...ActorFragment
}
insertedAt
}
total
}
resources(page: 1, limit: 3) {
elements {
id
title
resourceUrl
summary
updatedAt
type
path
metadata {
...ResourceMetadataBasicFields
}
}
total
}
todoLists {
elements {
id
title
todos {
elements {
id
title
status
dueDate
assignedTo {
id
preferredUsername
}
}
total
}
}
total
}
}
${ACTOR_FRAGMENT}
${ADDRESS_FRAGMENT}
${EVENT_OPTIONS_FRAGMENT}
${TAG_FRAGMENT}
`;
export const FETCH_GROUP = gql`
query FetchGroup(
$name: String!
$afterDateTime: DateTime
$beforeDateTime: DateTime
$organisedEventsPage: Int
$organisedEventsLimit: Int
$postsPage: Int
$postsLimit: Int
$membersPage: Int
$membersLimit: Int
$discussionsPage: Int
$discussionsLimit: Int
) {
group(preferredUsername: $name) {
...GroupFullFields
}
}
${GROUP_FIELDS_FRAGMENTS}
${DISCUSSION_BASIC_FIELDS_FRAGMENT}
${POST_BASIC_FIELDS}
${RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT}
`;
export const GET_GROUP = gql`
query GetGroup(
$id: ID!
$afterDateTime: DateTime
$beforeDateTime: DateTime
$organisedEventsPage: Int
$organisedEventsLimit: Int
$postsPage: Int
$postsLimit: Int
$membersPage: Int
$membersLimit: Int
$discussionsPage: Int
$discussionsLimit: Int
) {
getGroup(id: $id) {
mediaSize
...GroupFullFields
}
}
${GROUP_FIELDS_FRAGMENTS}
${DISCUSSION_BASIC_FIELDS_FRAGMENT}
${POST_BASIC_FIELDS}
${RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT}
`;
export const CREATE_GROUP = gql`
mutation CreateGroup(
$preferredUsername: String!
$name: String!
$summary: String
$avatar: MediaInput
$banner: MediaInput
) {
createGroup(
preferredUsername: $preferredUsername
name: $name
summary: $summary
banner: $banner
avatar: $avatar
) {
...ActorFragment
banner {
id
url
}
}
}
${ACTOR_FRAGMENT}
`;
export const UPDATE_GROUP = gql`
mutation UpdateGroup(
$id: ID!
$name: String
$summary: String
$avatar: MediaInput
$banner: MediaInput
$visibility: GroupVisibility
$openness: Openness
$physicalAddress: AddressInput
$manuallyApprovesFollowers: Boolean
) {
updateGroup(
id: $id
name: $name
summary: $summary
banner: $banner
avatar: $avatar
visibility: $visibility
openness: $openness
physicalAddress: $physicalAddress
manuallyApprovesFollowers: $manuallyApprovesFollowers
) {
...ActorFragment
visibility
openness
manuallyApprovesFollowers
banner {
id
url
}
}
}
${ACTOR_FRAGMENT}
`;
export const DELETE_GROUP = gql`
mutation DeleteGroup($groupId: ID!) {
deleteGroup(groupId: $groupId) {
id
}
}
`;
export const LEAVE_GROUP = gql`
mutation LeaveGroup($groupId: ID!) {
leaveGroup(groupId: $groupId) {
id
}
}
`;
export const REFRESH_PROFILE = gql`
mutation RefreshProfile($actorId: ID!) {
refreshProfile(id: $actorId) {
id
}
}
`;
export const GROUP_TIMELINE = gql`
query GroupTimeline(
$preferredUsername: String!
$type: ActivityType
$author: ActivityAuthor
$page: Int
$limit: Int
) {
group(preferredUsername: $preferredUsername) {
...ActorFragment
activity(type: $type, author: $author, page: $page, limit: $limit) {
total
elements {
id
insertedAt
subject
subjectParams {
key
value
}
type
author {
...ActorFragment
}
group {
...ActorFragment
}
object {
... on Event {
id
title
}
... on Post {
id
title
}
... on Member {
id
actor {
...ActorFragment
}
}
... on Resource {
id
title
path
type
}
... on Discussion {
id
title
slug
}
... on Comment {
id
}
... on Group {
...ActorFragment
visibility
openness
physicalAddress {
id
}
banner {
id
url
}
}
}
}
}
}
}
${ACTOR_FRAGMENT}
`;
export const CLOSE_GROUPS = gql`
query CloseGroups($location: String, $radius: Float) {
searchGroups(location: $location, radius: $radius, page: 1, limit: 10) {
total
elements {
...ActorFragment
physicalAddress {
...AdressFragment
}
}
}
}
${ACTOR_FRAGMENT}
${ADDRESS_FRAGMENT}
`;