initial: bootstrap from BukidBountyApp base
This commit is contained in:
53
resources/js/composables/useActivity.js
Normal file
53
resources/js/composables/useActivity.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import { ref } from 'vue';
|
||||
import axios from 'axios';
|
||||
|
||||
export function useActivity() {
|
||||
const activities = ref([]);
|
||||
const loading = ref(false);
|
||||
const error = ref(null);
|
||||
|
||||
const fetchRecentActivities = async (limit = 10) => {
|
||||
loading.value = true;
|
||||
error.value = null;
|
||||
try {
|
||||
const response = await axios.get('/api/activity/recent', {
|
||||
params: { limit }
|
||||
});
|
||||
if (response.data.success) {
|
||||
activities.value = response.data.data;
|
||||
} else {
|
||||
error.value = 'Failed to fetch activities';
|
||||
}
|
||||
} catch (err) {
|
||||
error.value = err.message || 'Error connecting to activity service';
|
||||
console.error('Activity fetch error:', err);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
const searchActivities = async (query, limit = 20) => {
|
||||
loading.value = true;
|
||||
error.value = null;
|
||||
try {
|
||||
const response = await axios.get('/api/activity/search', {
|
||||
params: { q: query, limit }
|
||||
});
|
||||
if (response.data.success) {
|
||||
activities.value = response.data.data;
|
||||
}
|
||||
} catch (err) {
|
||||
error.value = err.message;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
activities,
|
||||
loading,
|
||||
error,
|
||||
fetchRecentActivities,
|
||||
searchActivities
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user