Repository URL to install this package:
|
Version:
1.2.13 ▾
|
import { remove, concat } from 'ramda'
import { FavoriteSchemaModel, Typed } from 'omnischema'
@mobx(FavoriteSchemaModel)
class Model {
@action
addFavorite(favorite) {
return self.list.concat(favorite)
}
@action
removeFavorite(favorite) {
self.list.remove(favorite)
}
@action
removeFavoriteAt(index) {
self.list = remove(index, 1, self.list)
}
@computed
get totalFavorites() {
return this.favorites.length
}
@selector
findFavorite(predicate) {
return this.favorites.find(item => predicate(attribute))
}
}
const Model = self => class {
// @action via `add, remove, delete, update`
addFavorite(favorite) {
return self.list.concat(favorite)
}
removeFavorite(favorite) {
self.list.remove(favorite)
}
removeFavoriteAt(index) {
self.list = remove(index, 1, self.list)
}
// @select based on `get, find, query, select, where`
getTotalFavorites() {
return self.favorites.length
}
findFavorite(predicate) {
return self.favorites.find(item => predicate(attribute))
}
}
export default mobx(Model).schema(FavoriteSchemaModel)
// ----
import { remove, concat } from 'ramda'
import { FavoriteSchemaModel, Typed } from 'omnischema'
const {MODEL, EMPTY} = Typed.name('Mobx').coerce(FavoriteSchemaModel)
export default MODEL
.actions(self => ({
addFavorite: favorite => self.list.concat(favorite),
removeFavorite: favorite => self.list.remove(favorite),
removeFavoriteAt: index => self.list = remove(index, 1, self.list)
}))
.views(self => ({
get totalFavorites() {
return self.favorites.length
},
}))
.create(EMPTY)
// ----
import { remove, concat } from 'ramda'
import { FavoriteSchemaModel, Typed } from 'omnischema'
const {MODEL, EMPTY} = Typed.name('Mobx').coerce(FavoriteSchemaModel)
const actions = self => {
const addFavorite = favorite => self.list.concat(toArray(favorite))
const removeFavorite = favorite => self.list.remove(favorite)
const removeFavoriteAt = index => self.list = remove(index, 1, self.list)
return {addFavorite, removeFavorite, removeFavoriteAt}
}
const views = self => {
return {
get totalFavorites() {
return self.favorites.length
}
}
}
export default MODEL
.actions(actions)
.views(views)
.create(EMPTY)