Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// toggle main comment box
showInputBox: t.optional(t.boolean, false),
// toggle editor inside the comment box
showInputEditor: t.optional(t.boolean, false),
// toggle markdown preview inside the comment box
showInputPreview: t.optional(t.boolean, false),
// toggle modal editor for reply
showReplyBox: t.optional(t.boolean, false),
showReplyEditor: t.optional(t.boolean, false),
showReplyPreview: t.optional(t.boolean, false),
// current to be delete comment id, use to target the confirm mask
tobeDeleteId: t.maybe(t.string),
// words count for current comment (include reply comment)
countCurrent: t.optional(t.number, 0),
// cur filter type of comment list
filterType: t.optional(
t.enumeration('filterType', [
TYPE.DESC_INSERTED,
TYPE.ASC_INSERTED,
TYPE.MOST_LIKES,
TYPE.MOST_DISLIKES,
]),
TYPE.ASC_INSERTED
),
// content input of current comment editor
editContent: t.optional(t.string, ''),
// content input of current reply comment editor
replyContent: t.optional(t.string, ''),
// comments pagination data of current COMMUNITY / Thread
entries: t.optional(t.array(Comment), []),
import Account from '../Account';
const entities = new XmlEntities();
const MAX_LEVELS = 5;
const ITEMS_PER_LEVEL = 5;
/**
* Item model
*/
const Item = types.model('Item', {
// Base fields
id: types.identifier(types.string),
type: types.string,
by: types.maybe(types.string),
descendants: types.optional(types.number, 0),
kids: types.optional(types.array(types.number), []),
score: types.maybe(types.number),
time: types.number,
title: types.maybe(types.string),
text: types.maybe(types.string),
url: types.maybe(types.string),
parent: types.maybe(types.string),
// App specific fields
metadata: types.maybe(Metadata),
belongsTo: types.optional(types.array(types.string), []),
comments: types.optional(types.array(types.late(() => ItemReference)), []),
offset: types.optional(types.number, 0),
isPending: types.optional(types.boolean, false),
isError: types.optional(types.boolean, false),
})
import { types as t, getParent } from 'mobx-state-tree'
import { markStates, buildLog } from '@utils'
import { Community } from '@model'
/* eslint-disable no-unused-vars */
const log = buildLog('S:communities')
/* eslint-enable no-unused-vars */
// const log = buildLog('S:CommunitiesStore')
const CommunitiesStore = t
.model('CommunitiesStore', {
entries: t.optional(t.array(Community), []),
pageNumber: t.optional(t.number, 1),
pageSize: t.optional(t.number, 20), // TODO: USE CONSTANTS
totalCount: t.optional(t.number, 0),
totalPages: t.optional(t.number, 0),
// filter: {catalogry ... }
// id: t.identifier(),
// languages: t.map(PlModel),
// frameworks: t.map(FrameworkModel),
// databases: t.map(DatabaseModel),
// cheatsheet: t.optional(CheatSheetModal, { title: '', desc: '', raw: '' }),
// jobs: ...
// themes: ...
// log: ...
// user: ...
// cmds: t.map(CmdModel),
})
.views(self => ({
customerId: string;
customer: string;
totalItems: number;
totalQuantity: number;
subTotal: number;
created: number;
updated: number;
}
export const BasketIndexModel = types
.model('Basket_BasketIndex', {
id: types.identifier(types.string),
customerId: types.optional(types.string, ''),
customer: types.optional(types.string, ''),
totalItems: types.number,
totalQuantity: types.number,
subTotal: types.number,
created: types.number,
updated: types.number
});
* @property {number} [maxPeer]
* @property {number} [minTime]
* @property {number} [maxTime]
* @property {function} setText
* @property {function} setSize
* @property {function} setSeed
* @property {function} setPeer
* @property {function} setTime
* @property {function} getTextFilterRe
* @property {function} testText
* @property {function} testRange
* @property {function} getFilter
*/
const FiltersStore = types.model('FiltersStore', {
text: types.optional(types.string, ''),
minSize: types.optional(types.number, 0),
maxSize: types.optional(types.number, 0),
minSizeGb: types.optional(types.number, 0),
maxSizeGb: types.optional(types.number, 0),
minSeed: types.optional(types.number, 0),
maxSeed: types.optional(types.number, 0),
minPeer: types.optional(types.number, 0),
maxPeer: types.optional(types.number, 0),
minTime: types.optional(types.number, 0),
maxTime: types.optional(types.number, 0),
}).actions(/**FiltersStore*/self => {
return {
setText(value) {
self.text = value;
},
setSize(min, max) {
const factor = 1024 * 1024 * 1024;
import { types, getEnv, flow } from 'mobx-state-tree';
export const TeamMember = types.model('TeamMember', {
userId: types.identifier(types.number),
teamId: types.number,
avatarUrl: types.string,
email: types.string,
login: types.string,
});
type TeamMemberType = typeof TeamMember.Type;
export interface ITeamMember extends TeamMemberType {}
export const TeamGroup = types.model('TeamGroup', {
groupId: types.identifier(types.string),
teamId: types.number,
});
type TeamGroupType = typeof TeamGroup.Type;
export interface ITeamGroup extends TeamGroupType {}
import { AxiosResponse } from 'axios';
import { flow, types } from 'mobx-state-tree';
import { Loading } from '../../../stores/$loading';
import { $ } from '../../../utils';
import { User } from './$user';
const Users = types
.compose(Loading, types.model({
list: types.array(User),
total: types.maybe(types.number),
page: types.maybe(types.number)
}))
.named('users')
.volatile(() => {
return {
PAGE_SIZE: 5
};
})
.actions((self) => {
return {
fetchAsync: flow(function* fetchAsync({ page }: { page: number }) {
const { data, headers }: AxiosResponse = yield $.get(`/users?_page=${page}&_limit=${self.PAGE_SIZE}`);
self.list.clear();
self.list.push(...data);
self.total = Number.parseInt(headers['x-total-count'], 10);
self.page = page;
import { get } from 'lodash'
import asyncStates from '@zooniverse/async-states'
import { flow, getRoot, types } from 'mobx-state-tree'
import numberString from './types/numberString'
const Project = types
.model('Project', {
avatar: types.frozen({}),
background: types.frozen({}),
classifications_count: types.optional(types.number, 0),
classifiers_count: types.optional(types.number, 0),
configuration: types.frozen({}),
completeness: types.optional(types.number, 0),
description: types.optional(types.string, ''),
display_name: types.maybeNull(types.string),
error: types.frozen({}),
experimental_tools: types.frozen([]),
id: types.maybeNull(numberString),
introduction: types.maybeNull(types.string),
launch_approved: types.optional(types.boolean, false),
links: types.maybeNull(types.frozen({})),
loadingState: types.optional(types.enumeration('state', asyncStates.values), asyncStates.initialized),
researcher_quote: types.maybeNull(types.string),
owners: types.frozen([]),
retired_subjects_count: types.optional(types.number, 0),
slug: types.optional(types.string, ''),
raw: t.string,
})
export const SimpleCategory = t.model('Category', {
id: t.maybeNull(t.string),
title: t.maybeNull(t.string),
})
export const Community = t.model('Community', {
id: t.maybeNull(t.string),
title: t.maybeNull(t.string),
desc: t.optional(t.string, ''),
raw: t.maybeNull(t.string),
logo: t.maybeNull(t.string),
categories: t.optional(t.array(SimpleCategory), []),
contributesDigest: t.optional(t.array(t.number), []),
subscribersCount: t.optional(t.number, 0),
editorsCount: t.optional(t.number, 0),
postsCount: t.optional(t.number, 0),
jobsCount: t.optional(t.number, 0),
videosCount: t.optional(t.number, 0),
reposCount: t.optional(t.number, 0),
threadsCount: t.optional(t.number, 0),
tagsCount: t.optional(t.number, 0),
viewerHasSubscribed: t.maybeNull(t.boolean),
threads: t.optional(t.array(Thread), []),
insertedAt: t.optional(t.string, ''),
updatedAt: t.optional(t.string, ''),
})
github: types.maybeNull(
types.model({
email: types.maybeNull(types.string),
})
),
zeit: types.maybeNull(
types.model({
email: types.maybeNull(types.string),
token: types.string,
})
),
}),
name: types.maybeNull(types.string),
subscription: types.maybeNull(
types.model({
amount: types.number,
since: types.string,
cancelAtPeriodEnd: types.maybeNull(types.boolean),
})
),
username: types.maybeNull(types.string),
sendSurvey: types.maybeNull(types.boolean),
})
),
connected: types.boolean,
isLoadingCLI: types.boolean,
isLoadingGithub: types.boolean,
isLoadingZeit: types.boolean,
contextMenu: types.model({
show: types.boolean,
items: types.array(types.string),
x: types.number,