216 lines
5.2 KiB
JavaScript
216 lines
5.2 KiB
JavaScript
import { getConfig } from '@edx/frontend-platform';
|
|
|
|
export const getApiBaseUrl = () => getConfig().LMS_BASE_URL;
|
|
|
|
/**
|
|
* Enum for thread types.
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const ThreadType = {
|
|
ALL: 'all',
|
|
QUESTION: 'question',
|
|
DISCUSSION: 'discussion',
|
|
};
|
|
|
|
/**
|
|
* Enum to map between endorsement status and friendly name.
|
|
* @readonly
|
|
* @enum
|
|
*/
|
|
export const EndorsementStatus = {
|
|
ENDORSED: 'endorsed',
|
|
UNENDORSED: 'unendorsed',
|
|
DISCUSSION: 'discussion',
|
|
};
|
|
|
|
/**
|
|
* Maps endorsement status and the corresponding API parameter.
|
|
* @readonly
|
|
* @enum
|
|
*/
|
|
export const EndorsementValue = {
|
|
[EndorsementStatus.ENDORSED]: true,
|
|
[EndorsementStatus.UNENDORSED]: false,
|
|
[EndorsementStatus.DISCUSSION]: null,
|
|
};
|
|
|
|
/**
|
|
* Edit actions for posts and comments
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const ContentActions = {
|
|
EDIT_CONTENT: 'raw_body',
|
|
PIN: 'pinned',
|
|
ENDORSE: 'endorsed',
|
|
CLOSE: 'closed',
|
|
COPY_LINK: 'copy_link',
|
|
REPORT: 'abuse_flagged',
|
|
DELETE: 'delete',
|
|
FOLLOWING: 'following',
|
|
CHANGE_GROUP: 'group_id',
|
|
MARK_READ: 'read',
|
|
CHANGE_TITLE: 'title',
|
|
CHANGE_TOPIC: 'topic_id',
|
|
CHANGE_TYPE: 'type',
|
|
VOTE: 'voted',
|
|
};
|
|
|
|
/**
|
|
* Enum for request status.
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const RequestStatus = {
|
|
IDLE: 'idle',
|
|
IN_PROGRESS: 'in-progress',
|
|
SUCCESSFUL: 'successful',
|
|
FAILED: 'failed',
|
|
DENIED: 'denied',
|
|
};
|
|
|
|
/**
|
|
* Enum for author label and avatar border color classes.
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const AvatarOutlineAndLabelColors = {
|
|
Staff: 'staff-color',
|
|
'Community TA': 'TA-color',
|
|
};
|
|
|
|
/**
|
|
* Enum for thread ordering.
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const ThreadOrdering = {
|
|
BY_LAST_ACTIVITY: 'lastActivityAt',
|
|
BY_COMMENT_COUNT: 'commentCount',
|
|
BY_VOTE_COUNT: 'voteCount',
|
|
};
|
|
|
|
/**
|
|
* Enum for filtering posts by status.
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const PostsStatusFilter = {
|
|
ALL: 'statusAll',
|
|
UNREAD: 'statusUnread',
|
|
FOLLOWING: 'statusFollowing',
|
|
REPORTED: 'statusReported',
|
|
UNANSWERED: 'statusUnanswered',
|
|
UNRESPONDED: 'statusUnresponded',
|
|
};
|
|
|
|
/**
|
|
* Enum for filtering topics.
|
|
* @readonly
|
|
* @enum {string}
|
|
*/
|
|
export const TopicsFilter = {
|
|
ALL: 'allTopics',
|
|
COURSE_SECTION: 'courseSectionTopics',
|
|
GENERAL: 'generalTopics',
|
|
};
|
|
|
|
export const TopicOrdering = {
|
|
BY_COURSE_STRUCTURE: 'sortByCourseStructure',
|
|
BY_LAST_ACTIVITY: 'sortByLastActivity',
|
|
BY_COMMENT_COUNT: 'sortByCommentCount',
|
|
};
|
|
|
|
export const LearnersOrdering = {
|
|
BY_FLAG: 'flagged',
|
|
BY_LAST_ACTIVITY: 'activity',
|
|
BY_RECENCY: 'recency',
|
|
};
|
|
|
|
/**
|
|
* Enum for discussion provider types supported by the MFE.
|
|
* @type {{OPEN_EDX: string, LEGACY: string}}
|
|
*/
|
|
export const DiscussionProvider = {
|
|
LEGACY: 'legacy',
|
|
OPEN_EDX: 'openedx',
|
|
};
|
|
|
|
const BASE_PATH = `${getConfig().PUBLIC_PATH}:courseId`;
|
|
|
|
export const Routes = {
|
|
DISCUSSIONS: {
|
|
PATH: BASE_PATH,
|
|
},
|
|
LEARNERS: {
|
|
PATH: `${BASE_PATH}/learners`,
|
|
POSTS: `${BASE_PATH}/learners/:learnerUsername/posts(/:postId)?`,
|
|
},
|
|
POSTS: {
|
|
PATH: `${BASE_PATH}/topics/:topicId`,
|
|
MY_POSTS: `${BASE_PATH}/my-posts(/:postId)?`,
|
|
ALL_POSTS: `${BASE_PATH}/posts(/:postId)?`,
|
|
NEW_POST: [
|
|
`${BASE_PATH}/topics/:topicId/posts/:postId`,
|
|
`${BASE_PATH}/topics/:topicId`,
|
|
`${BASE_PATH}`,
|
|
],
|
|
EDIT_POST: [
|
|
`${BASE_PATH}/category/:category/posts/:postId/edit`,
|
|
`${BASE_PATH}/topics/:topicId/posts/:postId/edit`,
|
|
`${BASE_PATH}/posts/:postId/edit`,
|
|
`${BASE_PATH}/my-posts/:postId/edit`,
|
|
`${BASE_PATH}/learners/:learnerUsername/posts/:postId/edit`,
|
|
],
|
|
},
|
|
COMMENTS: {
|
|
PATH: [
|
|
`${BASE_PATH}/category/:category/posts/:postId`,
|
|
`${BASE_PATH}/topics/:topicId/posts/:postId`,
|
|
`${BASE_PATH}/posts/:postId`,
|
|
`${BASE_PATH}/my-posts/:postId`,
|
|
`${BASE_PATH}/learners/:learnerUsername/posts/:postId`,
|
|
],
|
|
PAGE: `${BASE_PATH}/:page`,
|
|
PAGES: {
|
|
category: `${BASE_PATH}/category/:category/posts/:postId`,
|
|
topics: `${BASE_PATH}/topics/:topicId/posts/:postId`,
|
|
posts: `${BASE_PATH}/posts/:postId`,
|
|
'my-posts': `${BASE_PATH}/my-posts/:postId`,
|
|
learners: `${BASE_PATH}/learners/:learnerUsername/posts/:postId`,
|
|
},
|
|
},
|
|
TOPICS: {
|
|
PATH: [
|
|
`${BASE_PATH}/topics/:topicId?`,
|
|
`${BASE_PATH}/category/:category`,
|
|
`${BASE_PATH}/topics`,
|
|
],
|
|
ALL: `${BASE_PATH}/topics`,
|
|
CATEGORY: `${BASE_PATH}/category/:category`,
|
|
CATEGORY_POST: `${BASE_PATH}/category/:category/posts/:postId`,
|
|
TOPIC: `${BASE_PATH}/topics/:topicId`,
|
|
TOPIC_POST: `${BASE_PATH}/topics/:topicId/posts/:postId`,
|
|
TOPIC_POST_EDIT: `${BASE_PATH}/topics/:topicId/posts/:postId/edit`,
|
|
},
|
|
};
|
|
|
|
export const PostsPages = {
|
|
category: `${BASE_PATH}/category/:category/posts`,
|
|
topics: `${BASE_PATH}/topics/:topicId/posts`,
|
|
posts: `${BASE_PATH}/posts`,
|
|
'my-posts': `${BASE_PATH}/my-posts`,
|
|
learners: `${BASE_PATH}/learners/:learnerUsername/posts`,
|
|
};
|
|
|
|
export const ALL_ROUTES = []
|
|
.concat([Routes.TOPICS.CATEGORY_POST, Routes.TOPICS.CATEGORY])
|
|
.concat(Routes.COMMENTS.PATH)
|
|
.concat(Routes.TOPICS.PATH)
|
|
.concat([Routes.POSTS.ALL_POSTS, Routes.POSTS.MY_POSTS])
|
|
.concat([Routes.LEARNERS.POSTS, Routes.LEARNERS.PATH])
|
|
.concat([Routes.DISCUSSIONS.PATH]);
|
|
|
|
export const MAX_UPLOAD_FILE_SIZE = 1024;
|