Parcourir la source

stores

master
mcarman il y a 4 ans
Parent
révision
1a8734191d
2 fichiers modifiés avec 116 ajouts et 0 suppressions
  1. +59
    -0
      src/stores/courseStore.js
  2. +57
    -0
      src/stores/userStore.js

+ 59
- 0
src/stores/courseStore.js Voir le fichier

@@ -0,0 +1,59 @@
import { EventEmitter } from "events";
import Dispatcher from "../appDispatcher";
import actionTypes from "../actions/actionTypes";

const CHANGE_EVENT = "change";
let _courses = [];

class CourseStore extends EventEmitter {
addChangeListener(callback) {
this.on(CHANGE_EVENT, callback);
}

removeChangeListener(callback) {
this.removeListener(CHANGE_EVENT, callback);
}

emitChange() {
this.emit(CHANGE_EVENT);
}

getCourses() {
return _courses;
}

getCourseBySlug(slug) {
return _courses.find(course => course.slug === slug);
}
}

const store = new CourseStore();

Dispatcher.register(action => {
switch (action.actionType) {
case actionTypes.DELETE_COURSE:
_courses = _courses.filter(
course => course.id !== parseInt(action.id, 10)
);
store.emitChange();
break;
case actionTypes.CREATE_COURSE:
_courses.push(action.course);
store.emitChange();
break;
case actionTypes.UPDATE_COURSE:
_courses = _courses.map(course =>
course.id === action.course.id ? action.course : course
);
store.emitChange();
break;
case actionTypes.LOAD_COURSES:
_courses = action.courses;
store.emitChange();
break;
default:
// nothing to do here
}
});

export default store;

+ 57
- 0
src/stores/userStore.js Voir le fichier

@@ -0,0 +1,57 @@
import { EventEmitter } from "events";
import Dispatcher from "../appDispatcher";
import actionTypes from "../actions/actionTypes";

const CHANGE_EVENT = "change";
let _users = [];

class UserStore extends EventEmitter {
addChangeListener(callback) {
this.on(CHANGE_EVENT, callback);
}

removeChangeListener(callback) {
this.removeListener(CHANGE_EVENT, callback);
}

emitChange() {
this.emit(CHANGE_EVENT);
}

getUsers() {
return _users;
}

getUserBySlug(slug) {
return _users.find((user) => user.slug === slug);
}
}

const store = new UserStore();

Dispatcher.register((action) => {
switch (action.actionType) {
case actionTypes.DELETE_USER:
_users = _users.filter((user) => user.id !== parseInt(action.id, 10));
store.emitChange();
break;
case actionTypes.CREATE_USER:
_users.push(action.user);
store.emitChange();
break;
case actionTypes.UPDATE_USER:
_users = _users.map((user) =>
user.id === action.user.id ? action.user : user
);
store.emitChange();
break;
case actionTypes.LOAD_USERS:
_users = action.users;
store.emitChange();
break;
default:
// nothing to do here
}
});

export default store;

Chargement…
Annuler
Enregistrer