-
-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathconstants.js
More file actions
200 lines (170 loc) · 5.46 KB
/
constants.js
File metadata and controls
200 lines (170 loc) · 5.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
'use strict'
export const MAX_HASH_LEN = 300
export const MAX_MEMO_LEN = 4096
export const MAX_URL_LEN = 2048
// identity.js related
export const IDENTITY_PASSWORD_MIN_CHARS = 7
export const IDENTITY_USERNAME_MAX_CHARS = 80
export const IDENTITY_EMAIL_MAX_CHARS = 320
export const IDENTITY_BIO_MAX_CHARS = 500
// group.js related
export const INVITE_INITIAL_CREATOR = 'invite-initial-creator'
export const PROFILE_STATUS = {
ACTIVE: 'active', // confirmed group join
PENDING: 'pending', // shortly after being approved to join the group
REMOVED: 'removed'
}
export const GROUP_NAME_MAX_CHAR = 50 // https://github.com/okTurtles/group-income/issues/2196
export const GROUP_DESCRIPTION_MAX_CHAR = 500
export const GROUP_PAYMENT_METHOD_MAX_CHAR = 1024
export const GROUP_NON_MONETARY_CONTRIBUTION_MAX_CHAR = 150
export const GROUP_CURRENCY_MAX_CHAR = 10
export const GROUP_MAX_PLEDGE_AMOUNT = 1000000000
export const GROUP_MINCOME_MAX = 1000000000
export const GROUP_DISTRIBUTION_PERIOD_MAX_DAYS = 365
export const GROUP_PERMISSION_UPDATE_ACTIONS = {
ADD: 'add',
EDIT: 'edit',
REMOVE: 'remove'
}
// group-proposal related
export const PROPOSAL_RESULT = 'proposal-result'
export const PROPOSAL_INVITE_MEMBER = 'invite-member'
export const PROPOSAL_REMOVE_MEMBER = 'remove-member'
export const PROPOSAL_GROUP_SETTING_CHANGE = 'group-setting-change'
export const PROPOSAL_PROPOSAL_SETTING_CHANGE = 'proposal-setting-change'
export const PROPOSAL_GENERIC = 'generic'
export const PROPOSAL_ARCHIVED = 'proposal-archived'
export const MAX_ARCHIVED_PROPOSALS = 100
export const PAYMENTS_ARCHIVED = 'payments-archived'
export const MAX_ARCHIVED_PERIODS = 100
export const MAX_SAVED_PERIODS = 2
export const MAX_HISTORY_PERIODS = 6
export const MAX_GROUP_MEMBER_COUNT = 150 // Dunbar's number (https://en.wikipedia.org/wiki/Dunbar's_number)
export const PROPOSAL_NAME_MAX_CHAR = 100
export const PROPOSAL_REASON_MAX_CHAR = 300
export const STATUS_OPEN = 'open'
export const STATUS_PASSED = 'passed'
export const STATUS_FAILED = 'failed'
export const STATUS_EXPIRING = 'expiring' // Only useful to notify users that the proposals are expiring
export const STATUS_EXPIRED = 'expired'
export const STATUS_CANCELLED = 'cancelled'
// group-streaks related
export const STREAK_ON_TIME_PAYMENTS = 1
export const STREAK_MISSED_PAYMENTS = 1
export const STREAK_MISSED_PROPSAL_VOTE = 2
export const STREAK_NOT_LOGGED_IN_DAYS = 14
// group-permissions related
export const GROUP_ROLES = {
ADMIN: 'admin',
MODERATOR_DELEGATOR: 'moderator-delegator',
MODERATOR: 'moderator',
CUSTOM: 'custom'
}
export const GROUP_PERMISSIONS = {
VIEW_PERMISSIONS: 'view-permissions',
ASSIGN_DELEGATOR: 'assign-delegator',
DELEGATE_PERMISSIONS: 'delegate-permissions', // add/edit/remove permissions
REMOVE_MEMBER: 'remove-member',
REVOKE_INVITE: 'revoke-invite',
DELETE_CHANNEL: 'delete-channel'
}
const GP = GROUP_PERMISSIONS
export const GROUP_PERMISSIONS_PRESET = {
ADMIN: [
GP.VIEW_PERMISSIONS,
GP.ASSIGN_DELEGATOR,
GP.DELEGATE_PERMISSIONS,
GP.REMOVE_MEMBER,
GP.REVOKE_INVITE,
GP.DELETE_CHANNEL
],
MODERATOR_DELEGATOR: [
GP.VIEW_PERMISSIONS,
GP.DELEGATE_PERMISSIONS,
GP.REMOVE_MEMBER,
GP.REVOKE_INVITE,
GP.DELETE_CHANNEL
],
MODERATOR: [
GP.VIEW_PERMISSIONS,
GP.REMOVE_MEMBER,
GP.REVOKE_INVITE,
GP.DELETE_CHANNEL
],
CUSTOM: [
GP.VIEW_PERMISSIONS,
GP.REMOVE_MEMBER,
GP.REVOKE_INVITE,
GP.DELETE_CHANNEL
]
}
// chatroom.js related
export const CHATROOM_GENERAL_NAME = 'general' // Chatroom name must be lowercase-only.
export const CHATROOM_NAME_LIMITS_IN_CHARS = 50
export const CHATROOM_DESCRIPTION_LIMITS_IN_CHARS = 280
export const CHATROOM_REPLYING_MESSAGE_LIMITS_IN_CHARS = 180
export const CHATROOM_MAX_MESSAGE_LEN = 20000
export const CHATROOM_MAX_MESSAGES = 20
export const CHATROOM_ACTIONS_PER_PAGE = 40
export const CHATROOM_MEMBER_MENTION_SPECIAL_CHAR = '@'
export const CHATROOM_CHANNEL_MENTION_SPECIAL_CHAR = '#'
export const CHATROOM_ATTACHMENT_TYPES = {
IMAGE: 'image',
VIDEO: 'video',
AUDIO: 'audio',
NON_MEDIA: 'non-media'
}
// chatroom events
export const MESSAGE_RECEIVE_RAW = 'message-receive-raw'
export const MESSAGE_RECEIVE = 'message-receive'
export const MESSAGE_SEND = 'message-send'
export const CHATROOM_TYPES = {
DIRECT_MESSAGE: 'direct-message',
GROUP: 'group'
}
export const CHATROOM_PRIVACY_LEVEL = {
GROUP: 'group',
PRIVATE: 'private',
PUBLIC: 'public'
}
export const MESSAGE_TYPES = {
POLL: 'poll',
TEXT: 'text',
INTERACTIVE: 'interactive',
NOTIFICATION: 'notification'
}
export const INVITE_EXPIRES_IN_DAYS = {
ON_BOARDING: null, // No expiration
PROPOSAL: 7
}
export const MESSAGE_NOTIFICATIONS = {
ADD_MEMBER: 'add-member',
JOIN_MEMBER: 'join-member',
LEAVE_MEMBER: 'leave-member',
KICK_MEMBER: 'kick-member',
UPDATE_DESCRIPTION: 'update-description',
UPDATE_NAME: 'update-name'
}
export const MESSAGE_VARIANTS = {
PENDING: 'pending',
SENT: 'sent',
RECEIVED: 'received',
FAILED: 'failed'
}
export const MESSAGE_NOTIFY_SETTINGS = {
ALL_MESSAGES: 'all-messages',
DIRECT_MESSAGES: 'direct-messages',
NOTHING: 'nothing'
}
export const POLL_TYPES = {
SINGLE_CHOICE: 'single-vote', // allows only 1 choice per member
MULTIPLE_CHOICES: 'multiple-votes' // allows multiple choices on the poll
}
export const POLL_STATUS = {
ACTIVE: 'active',
CLOSED: 'closed'
}
export const POLL_MAX_OPTIONS = 20
export const POLL_QUESTION_MAX_CHARS = 280
export const POLL_OPTION_MAX_CHARS = 280