Files

101 lines
2.8 KiB
JavaScript

import { defineStore } from 'pinia'
import axios from "axios";
import { Inertia } from '@inertiajs/inertia'
export const useSessionStore = defineStore('SessionStore', {
state: () => ({
loader: false,
bulkLoader: false,
selectedSessions: [],
sessions: [],
columns: [
{
key: 'id',
title: 'ایدی',
style: '!font-medium !text-sm',
width: 80,
},
{
key: 'ip',
title: 'آی پی دستگاه',
style: '!font-medium !text-sm',
width: 120,
},
{
key: 'user_agent',
title: 'نام دستگاه',
style: '!font-medium !text-sm',
width: 200,
},
{
key: 'last_activity',
title: 'آخرین فعالیت',
style: '!font-medium !text-xs',
width: 140,
},
{
key: 'actions',
title: 'عملیات',
hasSort: false,
slot: true,
width: 80,
},
],
endpoints: {
index: '/admin/setting-profile/sessions',
delete: (id) => `/admin/setting-profile/sessions/${id}`,
bulkDelete: '/admin/setting-profile/sessions-bulk-delete',
}
}),
getters: {
indexPageTitle: () => {
return 'نمایش نشست‌های فعال';
}
},
actions: {
setSessions(sessions) {
this.sessions = sessions;
},
deleteSession(sessionId) {
this.loader = true;
return new Promise((resolve, reject) => {
axios.delete(this.endpoints.delete(sessionId))
.then(response => {
Inertia.get(this.endpoints.index);
resolve(response);
})
.catch(error => {
this.loader = false;
reject(error);
});
});
},
bulkDeleteSessions(ids) {
return new Promise((resolve, reject) => {
axios.post(this.endpoints.bulkDelete, { ids })
.then(response => {
Inertia.get(this.endpoints.index);
resolve(response);
})
.catch(error => {
reject(error);
});
});
},
setSelectedSessions(sessions) {
this.selectedSessions = sessions;
},
clearSelectedSessions() {
this.selectedSessions = [];
}
}
})