bukopin-redemption-client-r.../src/common/stores/notification.js
Rifqy Zacky Ariadhy 1a000700e6 Initial commit
2019-01-02 18:39:53 +07:00

109 lines
2.8 KiB
JavaScript

import { observable, action, computed } from 'mobx';
export default class Notification {
@observable list = [];
@observable selected = {};
@observable istLoading = false;
@observable isSearching = false;
@observable filtered = [];
@observable unread_notif = 0;
constructor(context) {
this.http = context.http;
this.context = context;
}
@action
getList(){
this.isLoading = true;
return this.http.get("notifications")
.then(res => {
console.log(res.data, 'ini res')
this.list = res.data;
this.unread_notif = res.unread_notif;
this.isLoading = false;
})
.catch(err => {
this.isLoading = false;
throw err;
})
}
@action
readAll(){
return this.http.put("notifications/read_all",{}).then(res=>{
this.unread_notif = 0;
})
}
@action
getDetail(id){
this.isLoading = true;
return this.http.get(`notifications/${id}`)
.then(res => {
this.selected = res;
this.isLoading = false;
})
.catch(err => {
this.isLoading = false;
throw err;
})
}
@action
post(data){
this.isLoading = true;
return this.http.post("notifications", data)
.then(res => {
this.isLoading = false;
this.getList();
return res;
})
.catch(err => {
this.isLoading = false;
throw err;
})
}
@action
put(id,data){
this.isLoading = true;
return this.http.put(`notifications/${id}`, data)
.then(res => {
this.isLoading = false;
this.getList();
return res;
})
.catch(err => {
this.isLoading = false;
throw err;
})
}
@action
delete(id){
this.isLoading = true;
return this.http.delete(`notifications/${id}`)
.then(res => {
this.isLoading = false;
this.getList();
return res;
})
.catch(err => {
this.isLoading = false;
throw err;
})
}
filterItems = (query) => {
return this.list.filter((el) =>
el.id.toLowerCase().indexOf(query.toLowerCase()) > -1
);
}
@action
search(text){
this.filtered = this.filterItems(text);
}
}