feat: Implement project management with new views, services, store, and sidebar project selection.
This commit is contained in:
@@ -13,8 +13,15 @@ const api = axios.create({
|
||||
api.interceptors.request.use(
|
||||
config => {
|
||||
const user = JSON.parse(localStorage.getItem('user'));
|
||||
if (user && user.token) {
|
||||
config.headers['Authorization'] = `${user.tokenType} ${user.token}`;
|
||||
if (user && user.access_token) {
|
||||
config.headers.Authorization = `Bearer ${user.access_token}`;
|
||||
} else if (user && user.token) {
|
||||
config.headers.Authorization = `${user.tokenType} ${user.token}`;
|
||||
}
|
||||
|
||||
const projectId = localStorage.getItem('active_project_id');
|
||||
if (projectId) {
|
||||
config.headers['X-Project-ID'] = projectId;
|
||||
}
|
||||
return config;
|
||||
},
|
||||
|
||||
@@ -25,6 +25,16 @@ export const dataService = {
|
||||
return response.data
|
||||
},
|
||||
|
||||
createCharacter: async (characterData) => {
|
||||
const response = await api.post('/characters/', characterData)
|
||||
return response.data
|
||||
},
|
||||
|
||||
deleteCharacter: async (id) => {
|
||||
const response = await api.delete(`/characters/${id}`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
getAssetsByCharacterId: async (charId, limit, offset) => {
|
||||
const response = await api.get(`/characters/${charId}/assets`, { params: { limit, offset } })
|
||||
return response.data
|
||||
|
||||
31
src/services/projectsService.js
Normal file
31
src/services/projectsService.js
Normal file
@@ -0,0 +1,31 @@
|
||||
import api from './api';
|
||||
|
||||
export default {
|
||||
async getProjects() {
|
||||
return api.get('/projects');
|
||||
},
|
||||
|
||||
async createProject(projectData) {
|
||||
return api.post('/projects', projectData);
|
||||
},
|
||||
|
||||
async getProject(id) {
|
||||
// Using getProjects for now as per previous plan, or could try specific endpoint if it exists
|
||||
// Validating with backend: project_router has GET /api/projects (list)
|
||||
// It does NOT have GET /api/projects/{id}.
|
||||
// So we must fetch all and find, or assume the store has them.
|
||||
return api.get('/projects');
|
||||
},
|
||||
|
||||
async joinProject(projectId) {
|
||||
return api.post(`/projects/${projectId}/join`);
|
||||
},
|
||||
|
||||
async addMember(projectId, username) {
|
||||
return api.post(`/projects/${projectId}/members`, { username });
|
||||
},
|
||||
|
||||
async deleteProject(projectId) {
|
||||
return api.delete(`/projects/${projectId}`);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user