getsocial-react-native-sdk
Version:
React Native wrapper for GetSocial iOS and Android SDK
76 lines (67 loc) • 1.83 kB
JavaScript
// @flow
import UserId from './../UserId.js';
import CommunitiesIds from './CommunitiesIds.js';
import PollStatus from './PollStatus.js';
/**
* AnnouncementsQuery object.
*/
export default class AnnouncementsQuery {
ids: CommunitiesIds
pollStatus: PollStatus = PollStatus.All;
// eslint-disable-next-line require-jsdoc
constructor(ids: CommunitiesIds) {
this.ids = ids;
}
/**
* Get announcements for user's feed.
*
* @param {UserId} id id of the user.
* @return {AnnouncementsQuery} a new query.
*/
static forFeedOf(id: UserId): AnnouncementsQuery {
return new AnnouncementsQuery(CommunitiesIds.user(id));
}
/**
* Get announcements in topic.
*
* @param {string} id id of topic.
* @return {AnnouncementsQuery} a new query.
*/
static inTopic(id: string): AnnouncementsQuery {
return new AnnouncementsQuery(CommunitiesIds.topic(id));
}
/**
* Get announcements in a group.
*
* @param {string} id ID of group.
* @return {AnnouncementsQuery} new query.
*/
static inGroup(id: string): AnnouncementsQuery {
return new AnnouncementsQuery(CommunitiesIds.group(id));
}
/**
* Get announcements for all feeds and targeting users timeline.
*
* @return {AnnouncementsQuery} a new query.
*/
static timeline(): AnnouncementsQuery {
return new AnnouncementsQuery(CommunitiesIds.timeline());
}
/**
* Get activities with the specified poll status.
*
* @param {number} status Poll status value.
* @return {AnnouncementsQuery} new query.
*/
withPollStatus(status: number): AnnouncementsQuery {
this.pollStatus = status;
return this;
}
/**
* Generates JSON string.
* @return {string} object as json.
*/
toJSON() {
return {ids: this.ids, pollStatus: this.pollStatus};
}
}