1import { Module } from 'vuex';
2import { AppState } from './index';
3import { queries } from '@/../lib/querier';
5export interface AppletsState {
10export interface Applet {
16 type: 'applet' | 'service';
19const appletsModule: Module<AppletsState, AppState> = {
25 // title: "Update your Android wallpaper with NASA’s image of the day",
26 // description: "Change your Android wallpaper daily with NASA's image.",
28 // tags: ['NASA', 'wallpaper', 'image', 'applet'],
33 // title: "The Verge on YouTube integrations",
34 // description: "The Verge is a popular technology news and media network that covers a wide range of topics including gadgets, science, entertainment, and culture. They have a YouTube channel where they upload videos related to their coverage, including product reviews, interviews, and news updates. You can find their YouTube channel by searching for The Verge on YouTube.",
36 // tags: ['Verge', 'news', 'technology', 'service'],
41 // title: "Ask ChatGPT anything",
42 // description: "Posez vos questions à ChatGPT pour obtenir des réponses instantanées et détaillées.",
44 // tags: ['ChatGPT communication', 'questions', 'answers'],
49 // title: "NASA's Astronomy Picture of the Day",
50 // description: "Affichez l'image astronomique du jour de la NASA directement sur votre écran.",
52 // tags: ['NASA', 'astronomy', 'image', 'daily'],
57 // title: "NASA Space News Feed",
58 // description: "Restez à jour avec les dernières nouvelles de la NASA concernant l'espace et l'astronomie.",
60 // tags: ['NASA', 'news', 'space', 'science'],
65 // title: "ChatGPT communication",
66 // description: "Utilisez ChatGPT pour des réponses instantanées.",
68 // tags: ['ChatGPT', 'prompt', 'service'],
79 SET_SEARCH_QUERY(state, query: string) {
80 state.searchQuery = query;
82 APPEND_APPLETS(state, newApplets: Applet[]) {
83 state.applets = [...state.applets, ...newApplets];
85 CLEAR_APPLETS(state) {
90 filteredAllItems(state) {
91 return state.applets.filter((applet) =>
92 applet.title.toLowerCase().includes(state.searchQuery.toLowerCase()) ||
93 applet.description.toLowerCase().includes(state.searchQuery.toLowerCase()) ||
94 applet.tags.some(tag => tag.toLowerCase().includes(state.searchQuery.toLowerCase()))
97 filteredServices(state) {
98 return state.applets.filter((applet) =>
99 applet.type === 'service' && (
100 applet.title.toLowerCase().includes(state.searchQuery.toLowerCase()) ||
101 applet.description.toLowerCase().includes(state.searchQuery.toLowerCase()) ||
102 applet.tags.some(tag => tag.toLowerCase().includes(state.searchQuery.toLowerCase()))
106 filteredApplets(state) {
107 return state.applets.filter((applet) =>
108 applet.type === 'applet' && (
109 applet.title.toLowerCase().includes(state.searchQuery.toLowerCase()) ||
110 applet.description.toLowerCase().includes(state.searchQuery.toLowerCase()) ||
111 applet.tags.some(tag => tag.toLowerCase().includes(state.searchQuery.toLowerCase()))
117 updateSearchQuery({ commit }, query: string) {
118 commit('SET_SEARCH_QUERY', query);
120 async updateData({ commit }) {
121 const token = localStorage.getItem('authToken') || '';
122 const appletsPath = '/api/v1/applets';
123 const servicesPath = '/api/v1/services';
125 commit('CLEAR_APPLETS');
127 const appletsResponse = await queries.get(appletsPath, {}, token);
128 for (let i = 0; i < appletsResponse.msg.length; i++) {
130 id: appletsResponse.msg[i].id,
131 title: appletsResponse.msg[i].name,
132 description: appletsResponse.msg[i].description,
133 color: appletsResponse.msg[i].colour,
134 tags: appletsResponse.msg[i].tags,
135 type: appletsResponse.msg[i].type
137 commit('APPEND_APPLETS', applets);
140 console.error(error);
143 const servicesResponse = await queries.get(servicesPath, {}, token);
144 for (let i = 0; i < servicesResponse.msg.length; i++) {
146 id: servicesResponse.msg[i].id,
147 title: servicesResponse.msg[i].name,
148 description: servicesResponse.msg[i].description,
149 color: servicesResponse.msg[i].colour,
150 tags: servicesResponse.msg[i].tags,
151 type: servicesResponse.msg[i].type
153 commit('APPEND_APPLETS', applets);
162export default appletsModule;