Discussions Operations

Create Post

do {
    let createPost = CreatePost(
        content: "This is my comment on the match!",
        parentId: nil, // nil for top-level post, set for replies
        mentions: nil
    )

    let response = try await sdk.discussions().createPost(
        discussionId: "discussion123",
        createPost: createPost
    )

    if let comment = response.data {
        print("Post created: \(comment.id)")
    }
} catch {
    print("Error creating post: \(error)")
}

Get Discussion Posts

do {
    let filters = PostsFilters(
        startAfter: nil,
        limit: 20,
        sort: PostsSortTypes.latest,
        skipDeleted: true,
        skipModerated: true
    )

    let posts = try await sdk.discussions().getPosts(
        discussionId: "discussion123",
        filters: filters,
        disableCache: false
    )

    if let postArray = posts.data {
        print("Found \(postArray.count) posts")
    }
} catch {
    print("Error fetching posts: \(error)")
}

Update Post

do {
    let updatePost = UpdatePost(
        content: "Updated comment content"
    )

    try await sdk.discussions().updatePost(
        postId: "post123",
        updatePost: updatePost
    )
    print("Post updated successfully")
} catch {
    print("Error updating post: \(error)")
}

Delete Post

do {
    try await sdk.discussions().deletePost(postId: "post123")
    print("Post deleted successfully")
} catch {
    print("Error deleting post: \(error)")
}

React to Post

do {
    let reaction = ReactToPost(
        reactionType: ReactionType.like
    )

    try await sdk.discussions().reactToPost(
        postId: "post123",
        reactToPost: reaction
    )
    print("Reaction added to post")
} catch {
    print("Error reacting to post: \(error)")
}

Report Post

do {
    let report = ReportPost(
        reason: ReportReasonType.spam,
        description: "This post contains spam content"
    )

    try await sdk.discussions().reportPost(
        postId: "post123",
        reportPost: report
    )
    print("Post reported successfully")
} catch {
    print("Error reporting post: \(error)")
}

Get Discussions

do {
    let filters = DiscussionsFilters(
        type: DiscussionType.match,
        status: DiscussionStatus.active,
        limit: 10,
        cursor: nil
    )

    let discussions = try await sdk.discussions().getDiscussions(
        filters: filters,
        disableCache: false
    )

    if let discussionArray = discussions.data {
        print("Found \(discussionArray.count) discussions")
    }
} catch {
    print("Error fetching discussions: \(error)")
}

Get Top Discussions

do {
    let filters = TopDiscussionsFilters(
        entityType: TopDiscussionEntityType.match,
        limit: 5
    )

    let topDiscussions = try await sdk.discussions().getTopDiscussions(
        filters: filters,
        disableCache: false
    )
    print("Top discussions fetched")
} catch {
    print("Error fetching top discussions: \(error)")
}

Get Discussion by ID

do {
    let discussion = try await sdk.discussions().getById(discussionId: "discussion123")

    if let discussionData = discussion.data {
        print("Discussion: \(discussionData.title)")
    }
} catch {
    print("Error fetching discussion: \(error)")
}

Get Own Posts

do {
    let filters = PostsFilters(
        startAfter: nil,
        limit: 20,
        sort: PostsSortTypes.latest,
        skipDeleted: true,
        skipModerated: true
    )

    let posts = try await sdk.discussions().getOwnPosts(filters: filters)

    if let postArray = posts.data {
        print("Own posts: \(postArray.count)")
    }
} catch {
    print("Error fetching own posts: \(error)")
}

Get Post by ID

do {
    let post = try await sdk.discussions().getPostById(postId: "post123")

    if let postData = post.data {
        print("Post: \(postData.content)")
    }
} catch {
    print("Error fetching post: \(error)")
}

Get Post Replies

do {
    let filters = PostsFilters(
        startAfter: nil,
        limit: 10,
        sort: PostsSortTypes.oldest,
        skipDeleted: true,
        skipModerated: true
    )

    let replies = try await sdk.discussions().getPostReplies(
        postId: "post123",
        filters: filters,
        disableCache: false
    )

    if let replyArray = replies.data {
        print("Post replies: \(replyArray.count)")
    }
} catch {
    print("Error fetching post replies: \(error)")
}

Get Posts Count

do {
    let discussionIds = ["discussion1", "discussion2", "discussion3"]
    let counts = try await sdk.discussions().getPostsCount(
        discussionIds: discussionIds,
        disableCache: false
    )

    if let countArray = counts.data {
        print("Posts count for \(countArray.count) discussions")
    }
} catch {
    print("Error fetching posts count: \(error)")
}

Get Posts Count Extended

do {
    let discussionIds = ["discussion1", "discussion2", "discussion3"]
    let counts = try await sdk.discussions().getPostsCountExtended(discussionIds: discussionIds)

    if let countArray = counts.data {
        print("Extended posts count for \(countArray.count) discussions")
    }
} catch {
    print("Error fetching extended posts count: \(error)")
}

Get User Posts

do {
    let filters = PostsFilters(
        startAfter: nil,
        limit: 20,
        sort: PostsSortTypes.latest,
        skipDeleted: true,
        skipModerated: true
    )

    let posts = try await sdk.discussions().getUserPosts(
        userId: "user123",
        filters: filters,
        disableCache: false
    )

    if let postArray = posts.data {
        print("User posts: \(postArray.count)")
    }
} catch {
    print("Error fetching user posts: \(error)")
}

Get Discussion Config

do {
    let config = try await sdk.discussions().getConfig()
    print("Discussion config loaded")
} catch {
    print("Error fetching discussion config: \(error)")
}