Initial commit of MindShift CBT Therapy app
This commit is contained in:
185
MindShift-Windows/src/api.js
Normal file
185
MindShift-Windows/src/api.js
Normal file
@@ -0,0 +1,185 @@
|
||||
// API Configuration
|
||||
const API_BASE_URL = 'http://localhost:12004/api';
|
||||
|
||||
// Authentication token management
|
||||
let authToken = localStorage.getItem('authToken');
|
||||
|
||||
// API helper function
|
||||
async function apiCall(endpoint, options = {}) {
|
||||
const url = `${API_BASE_URL}${endpoint}`;
|
||||
const config = {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...(authToken && { 'Authorization': `Bearer ${authToken}` }),
|
||||
...options.headers
|
||||
},
|
||||
...options
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await fetch(url, config);
|
||||
const data = await response.json();
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(data.error || 'API request failed');
|
||||
}
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error('API Error:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// Authentication API
|
||||
export const authAPI = {
|
||||
async register(name, email, password) {
|
||||
const data = await apiCall('/auth/register', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ name, email, password })
|
||||
});
|
||||
authToken = data.token;
|
||||
localStorage.setItem('authToken', authToken);
|
||||
return data;
|
||||
},
|
||||
|
||||
async login(email, password) {
|
||||
const data = await apiCall('/auth/login', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ email, password })
|
||||
});
|
||||
authToken = data.token;
|
||||
localStorage.setItem('authToken', authToken);
|
||||
return data;
|
||||
},
|
||||
|
||||
async logout() {
|
||||
await apiCall('/auth/logout', { method: 'POST' });
|
||||
authToken = null;
|
||||
localStorage.removeItem('authToken');
|
||||
},
|
||||
|
||||
async getProfile() {
|
||||
return await apiCall('/auth/profile');
|
||||
}
|
||||
};
|
||||
|
||||
// Mood tracking API
|
||||
export const moodAPI = {
|
||||
async trackMood(moodType, intensity, notes) {
|
||||
return await apiCall('/mood/track', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ moodType, intensity, notes })
|
||||
});
|
||||
},
|
||||
|
||||
async getMoodHistory() {
|
||||
return await apiCall('/mood/history');
|
||||
}
|
||||
};
|
||||
|
||||
// Thought record API
|
||||
export const thoughtAPI = {
|
||||
async saveThoughtRecord(thoughtData) {
|
||||
return await apiCall('/thoughts', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(thoughtData)
|
||||
});
|
||||
},
|
||||
|
||||
async getThoughtRecords() {
|
||||
return await apiCall('/thoughts');
|
||||
},
|
||||
|
||||
async updateThoughtRecord(id, thoughtData) {
|
||||
return await apiCall(`/thoughts/${id}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(thoughtData)
|
||||
});
|
||||
},
|
||||
|
||||
async deleteThoughtRecord(id) {
|
||||
return await apiCall(`/thoughts/${id}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Gratitude API
|
||||
export const gratitudeAPI = {
|
||||
async saveGratitudeEntry(entry) {
|
||||
return await apiCall('/gratitude', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(entry)
|
||||
});
|
||||
},
|
||||
|
||||
async getGratitudeEntries() {
|
||||
return await apiCall('/gratitude');
|
||||
},
|
||||
|
||||
async updateGratitudeEntry(id, entry) {
|
||||
return await apiCall(`/gratitude/${id}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(entry)
|
||||
});
|
||||
},
|
||||
|
||||
async deleteGratitudeEntry(id) {
|
||||
return await apiCall(`/gratitude/${id}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Progress API
|
||||
export const progressAPI = {
|
||||
async getProgressStats() {
|
||||
return await apiCall('/progress/stats');
|
||||
},
|
||||
|
||||
async getProgressHistory() {
|
||||
return await apiCall('/progress/history');
|
||||
}
|
||||
};
|
||||
|
||||
// Notification API
|
||||
export const notificationAPI = {
|
||||
async getNotifications() {
|
||||
return await apiCall('/notifications');
|
||||
},
|
||||
|
||||
async markAsRead(notificationId) {
|
||||
return await apiCall(`/notifications/${notificationId}/read`, {
|
||||
method: 'PUT'
|
||||
});
|
||||
},
|
||||
|
||||
async deleteNotification(notificationId) {
|
||||
return await apiCall(`/notifications/${notificationId}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
},
|
||||
|
||||
async addNotification(notification) {
|
||||
return await apiCall('/notifications', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(notification)
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Check if user is authenticated
|
||||
export function isAuthenticated() {
|
||||
return !!authToken;
|
||||
}
|
||||
|
||||
// Initialize API with token check
|
||||
export function initializeAPI() {
|
||||
if (!authToken) {
|
||||
// Redirect to login or show login modal
|
||||
console.log('User not authenticated');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user