109 lines
2.8 KiB
JavaScript
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);
|
|
}
|
|
}
|