dsg
INSERT INTO `cp_filejs` (`id`,`app`,`path`,`modul`,`file_name`,`content`) VALUES ('314','3','u7/collector','auth','js/store.js---','import {\r\n getNotificationCount,\r\n getSessionUser,\r\n getUserDetails,\r\n getUserNotifications,\r\n markMultipleNotificationsAsRead\r\n} from \\\\\\\\\\\\\\\'./api/auth.js\\\\\\\\\\\\\\\'\r\nimport {\r\n sendRNMessage\r\n} from \\\\\\\\\\\\\\\'./api/consts.js\\\\\\\\\\\\\\\'\r\nimport {\r\n fetchTrendingEvents,\r\n fetchTrendingUsers,\r\n fetchTrendingVenues,\r\n fetchEventCats\r\n} from \\\\\\\\\\\\\\\'./api/discover.js\\\\\\\\\\\\\\\'\r\nimport {\r\n getPostsForGarage,\r\n getUserGarage\r\n} from \\\\\\\\\\\\\\\'./api/garage.js\\\\\\\\\\\\\\\'\r\nimport {\r\n fetchPosts,\r\n getPostsForUser\r\n} from \\\\\\\\\\\\\\\'./api/posts.js\\\\\\\\\\\\\\\'\r\nimport {\r\n fetchWastes,\r\n getWastesForUser\r\n} from \\\\\\\\\\\\\\\'./api/waste.js\\\\\\\\\\\\\\\'\r\n\r\nvar createStore = Framework7.createStore\r\n\r\nconst DEFAULT_SEARCH_RESULTS = {\r\n events: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n users: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n venues: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n top_results: {\r\n events: [],\r\n users: [],\r\n venues: [],\r\n },\r\n success: false,\r\n}\r\n\r\nconst DEFAULT_PAGINATED_DATA = {\r\n data: [],\r\n new_data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n}\r\n\r\nconst store = createStore({\r\n state: {\r\n user: null,\r\n posts: {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n wastes: {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n following_posts: {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n registerData: {\r\n user_id: \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\',\r\n email: \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\',\r\n password: \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\',\r\n username: \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\',\r\n },\r\n myGarage: [],\r\n myPosts: {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n myWastes: {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n myTags: {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n garageViewPosts: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n garageViewTags: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n scannedData: null,\r\n scanningQrCode: false,\r\n paths: {}, // Object to store unique paths and their data\r\n userPaths: {}, // Object to store unique user paths and their data\r\n userPathsUpdated: false,\r\n notifications: [],\r\n // discover page\r\n trendingEvents: [],\r\n trendingVenues: [],\r\n eventCategories: [],\r\n filteredEvents: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n filteredVenues: {\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n },\r\n discoverSearchData: DEFAULT_SEARCH_RESULTS,\r\n trendingUsers: DEFAULT_PAGINATED_DATA,\r\n // Search results\r\n searchResults: DEFAULT_SEARCH_RESULTS,\r\n notificationCount: 0,\r\n poorNetworkError: false,\r\n },\r\n getters: {\r\n checkPoorNetworkError({\r\n state\r\n }) {\r\n return state.poorNetworkError\r\n },\r\n getNotifCount({\r\n state\r\n }) {\r\n return state.notificationCount\r\n },\r\n getTrendingUsers({\r\n state\r\n }) {\r\n return state.trendingUsers\r\n },\r\n getSearchResults({\r\n state\r\n }) {\r\n return state.searchResults\r\n },\r\n getFilteredEvents({\r\n state\r\n }) {\r\n return state.filteredEvents\r\n },\r\n getFilteredVenues({\r\n state\r\n }) {\r\n return state.filteredVenues\r\n },\r\n getEventCategories({\r\n state\r\n }) {\r\n return state.eventCategories\r\n },\r\n getTrendingEvents({\r\n state\r\n }) {\r\n return state.trendingEvents\r\n },\r\n getTrendingVenues({\r\n state\r\n }) {\r\n return state.trendingVenues\r\n },\r\n getPathData({\r\n state\r\n }) {\r\n return state.paths\r\n },\r\n getUserPathUpdated({\r\n state\r\n }) {\r\n return state.userPathsUpdated\r\n },\r\n getUserPathData({\r\n state\r\n }) {\r\n return state.userPaths\r\n },\r\n getGarageViewPosts({\r\n state\r\n }) {\r\n return state.garageViewPosts\r\n },\r\n getGarageViewWastes({\r\n state\r\n }) {\r\n return state.garageViewWastes\r\n },\r\n getGarageViewTags({\r\n state\r\n }) {\r\n return state.garageViewTags\r\n },\r\n user({\r\n state\r\n }) {\r\n return state.user\r\n },\r\n getRegisterData({\r\n state\r\n }) {\r\n return state.registerData\r\n },\r\n isAuthenticated({\r\n state\r\n }) {\r\n return !!state.user\r\n },\r\n posts({\r\n state\r\n }) {\r\n return state.posts\r\n },\r\n wastes({\r\n state\r\n }) {\r\n return state.wastes\r\n },\r\n followingPosts({\r\n state\r\n }) {\r\n return state.following_posts\r\n },\r\n myGarage({\r\n state\r\n }) {\r\n return state.myGarage\r\n },\r\n myPosts({\r\n state\r\n }) {\r\n return state.myPosts\r\n },\r\n myWastes({\r\n state\r\n }) {\r\n return state.myWastes\r\n },\r\n myTags({\r\n state\r\n }) {\r\n return state.myTags\r\n },\r\n scannedData({\r\n state\r\n }) {\r\n return state.scannedData\r\n },\r\n isScanningQrCode({\r\n state\r\n }) {\r\n return state.scanningQrCode\r\n },\r\n getNotifications({\r\n state\r\n }) {\r\n return state.notifications\r\n },\r\n },\r\n actions: {\r\n updatePost({\r\n state\r\n }, {\r\n post_id,\r\n caption\r\n }) {\r\n // loop through the posts and find the post with the post_id\r\n const posts = state.posts.data\r\n const post = posts.find(p => p.id == post_id)\r\n\r\n const myPosts = state.myPosts.data\r\n const myPost = myPosts.find(p => p.id == post_id)\r\n\r\n // update the post with the new data\r\n if (post) {\r\n // update the post with the new data\r\n post.caption = caption\r\n // update the state with the new posts\r\n state.posts = {\r\n ...state.posts,\r\n data: posts,\r\n }\r\n }\r\n\r\n if (myPost) {\r\n myPost.caption = caption\r\n\r\n state.myPosts = {\r\n ...state.myPosts,\r\n data: myPosts,\r\n }\r\n }\r\n },\r\n markNotificationsAsRead({\r\n state\r\n }, notification_ids) {\r\n markMultipleNotificationsAsRead(notification_ids)\r\n state.notificationCount = 0\r\n },\r\n async notificationCount({\r\n state\r\n }) {\r\n const response = await getNotificationCount()\r\n state.notificationCount = response.count\r\n },\r\n setSearchResults({\r\n state\r\n }, payload) {\r\n state.searchResults = payload\r\n },\r\n async filterEvents({\r\n state\r\n }, {\r\n filters,\r\n page = 1\r\n }) {\r\n try {\r\n const events = await fetchTrendingEvents(page, true, filters)\r\n\r\n const data = {\r\n new_data: events.data,\r\n data: [\r\n ...state.filteredEvents.data,\r\n ...events.data,\r\n ],\r\n total_pages: events.total_pages,\r\n page: page,\r\n limit: events.limit,\r\n }\r\n\r\n state.filteredEvents = data\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Failed to filter events\\\\\\\\\\\\\\\', error)\r\n state.filteredEvents = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n },\r\n async filterTrendingUsers({\r\n state\r\n }, page = 1) {\r\n try {\r\n const response = await fetchTrendingUsers(page)\r\n\r\n const data = {\r\n new_data: response.data,\r\n data: [\r\n ...state.trendingUsers.data,\r\n ...response.data,\r\n ],\r\n total_pages: response.total_pages,\r\n page: page,\r\n limit: response.limit,\r\n }\r\n\r\n state.trendingUsers = data\r\n } catch (error) {\r\n console.log(\\\\\\\\\\\\\\\'Failed to fetch trending users\\\\\\\\\\\\\\\', error);\r\n state.trendingUsers = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n },\r\n async filterVenues({\r\n state\r\n }, {\r\n filters,\r\n page = 1\r\n }) {\r\n try {\r\n const events = await fetchTrendingVenues(page, true, filters)\r\n\r\n let existingVenues = state.filteredVenues.data.length > 0 ? state.filteredVenues.data : state.trendingVenues.data\r\n\r\n const data = {\r\n new_data: events.data,\r\n data: [\r\n ...existingVenues,\r\n ...events.data,\r\n ],\r\n total_pages: events.total_pages,\r\n page: page,\r\n limit: events.limit,\r\n }\r\n\r\n state.filteredVenues = data\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Failed to filter venues\\\\\\\\\\\\\\\', error)\r\n state.filteredVenues = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n },\r\n async fetchEventCategories({\r\n state\r\n }) {\r\n const categories = await fetchEventCats()\r\n\r\n state.eventCategories = categories\r\n },\r\n async getTrendingEvents({\r\n state\r\n }) {\r\n const events = await fetchTrendingEvents(1, false)\r\n state.trendingEvents = events\r\n },\r\n async getTrendingVenues({\r\n state\r\n }) {\r\n const venues = await fetchTrendingVenues(1, false)\r\n state.trendingVenues = venues\r\n },\r\n async fetchNotifications({\r\n state\r\n }) {\r\n const notifications = await getUserNotifications()\r\n state.notifications = notifications\r\n },\r\n async getUserPosts({\r\n state\r\n }, {\r\n user_id,\r\n page = 1,\r\n clear = false\r\n }) {\r\n const posts = await getPostsForUser(user_id, page)\r\n\r\n let prevUserPosts = {\r\n data: []\r\n }\r\n\r\n if (!clear) {\r\n if (state.userPaths[`user-${user_id}-posts`]) {\r\n prevUserPosts = state.userPaths[`user-${user_id}-posts`]\r\n }\r\n }\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...prevUserPosts.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n cleared: clear,\r\n }\r\n\r\n state.userPaths[`user-${user_id}-posts`] = data\r\n state.userPathsUpdated = true\r\n },\r\n async getUserTags({\r\n state\r\n }, {\r\n user_id,\r\n page = 1,\r\n clear = false\r\n }) {\r\n const posts = await getPostsForUser(user_id, page, true)\r\n\r\n let prevUserPosts = {\r\n data: []\r\n }\r\n if (!clear) {\r\n if (state.userPaths[`user-${user_id}-tags`]) {\r\n prevUserPosts = state.userPaths[`user-${user_id}-tags`]\r\n }\r\n }\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...prevUserPosts.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n cleared: clear,\r\n }\r\n\r\n state.userPaths[`user-${user_id}-tags`] = data\r\n state.userPathsUpdated = true\r\n },\r\n clearPathData({\r\n state\r\n }) {\r\n state.paths = {}\r\n },\r\n setPathData({\r\n state\r\n }, {\r\n path,\r\n data\r\n }) {\r\n // Ensure the path key exists\r\n if (!state.paths[path]) {\r\n state.paths[path] = {}\r\n }\r\n\r\n // Update the data for the given path\r\n state.paths[path] = {\r\n ...state.paths[path],\r\n ...data,\r\n }\r\n },\r\n removePathData({\r\n state\r\n }, path) {\r\n if (state.paths[path]) {\r\n delete state.paths[path]\r\n }\r\n },\r\n async login({\r\n state\r\n }, {\r\n token\r\n }) {\r\n try {\r\n const userDetails = await getUserDetails(token)\r\n\r\n if (!userDetails || !userDetails.success) {\r\n window.localStorage.removeItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\')\r\n throw new Error(\\\\\\\\\\\\\\\'User not found\\\\\\\\\\\\\\\')\r\n }\r\n\r\n window.localStorage.setItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\', token)\r\n state.user = userDetails.user\r\n\r\n setTimeout(() => {\r\n sendRNMessage({\r\n type: \\\\\\\\\\\\\\\"authData\\\\\\\\\\\\\\\",\r\n user_id: userDetails.user.id,\r\n page: \\\\\\\\\\\\\\\'auth\\\\\\\\\\\\\\\',\r\n })\r\n }, 1000)\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Login failed\\\\\\\\\\\\\\\', error)\r\n }\r\n },\r\n logout({\r\n state\r\n }) {\r\n state.user = null\r\n window.localStorage.removeItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\')\r\n window.location.reload()\r\n },\r\n async updateUserDetails({\r\n state\r\n }, external = false) {\r\n const token = window.localStorage.getItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\')\r\n\r\n if (!token) {\r\n return this.logout()\r\n }\r\n\r\n try {\r\n const userDetails = await getUserDetails(token)\r\n\r\n if (!userDetails || !userDetails.success) {\r\n window.localStorage.removeItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\')\r\n throw new Error(\\\\\\\\\\\\\\\'User not found\\\\\\\\\\\\\\\')\r\n }\r\n\r\n window.localStorage.setItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\', token)\r\n state.user = {\r\n ...userDetails.user,\r\n refreshed: true,\r\n external_refresh: external,\r\n }\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Login failed\\\\\\\\\\\\\\\', error)\r\n }\r\n },\r\n async checkAuth(context) {\r\n const token = await getSessionUser()\r\n\r\n if (token) {\r\n await context.dispatch(\\\\\\\\\\\\\\\'login\\\\\\\\\\\\\\\', {\r\n token: token\r\n })\r\n } else {\r\n window.localStorage.removeItem(\\\\\\\\\\\\\\\'token_u7_collector\\\\\\\\\\\\\\\')\r\n }\r\n },\r\n async getPosts({\r\n state\r\n }, page = 1) {\r\n try {\r\n console.log(\\\\\\\\\\\\\\\'Fetching posts\\\\\\\\\\\\\\\', page);\r\n const posts = await fetchPosts(page)\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...state.posts.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: posts.page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.posts = data\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Failed to fetch posts\\\\\\\\\\\\\\\', error)\r\n\r\n if (error.name === \\\\\\\\\\\\\\\'RequestTimeout\\\\\\\\\\\\\\\') {\r\n state.poorNetworkError = true\r\n }\r\n\r\n state.posts = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n },\r\n /*\r\n async getPosts({\r\n state\r\n }, {\r\n page = 1,\r\n reset = false\r\n }) {\r\n try {\r\n console.log(\\\\\\\\\\\\\\\'Fetching posts\\\\\\\\\\\\\\\', page, reset);\r\n\r\n const posts = await fetchPosts(page)\r\n\r\n if (reset) {\r\n state.posts = {\r\n new_data: posts.data,\r\n data: posts.data,\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n reset: true,\r\n }\r\n return\r\n }\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...state.posts.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.posts = data\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Failed to fetch posts\\\\\\\\\\\\\\\', error)\r\n\r\n if (error.name === \\\\\\\\\\\\\\\'RequestTimeout\\\\\\\\\\\\\\\') {\r\n state.poorNetworkError = true\r\n }\r\n\r\n state.posts = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n },*/\r\n async getWastes({\r\n state\r\n }, {\r\n page = 1,\r\n reset = false\r\n }) {\r\n try {\r\n console.log(\\\\\\\\\\\\\\\'Fetching wastes\\\\\\\\\\\\\\\', page, reset);\r\n\r\n const wastes = await fetchWastes(page)\r\n\r\n if (reset) {\r\n state.wastes = {\r\n new_data: wastes.data,\r\n data: wastes.data,\r\n total_pages: wastes.total_pages,\r\n page: page,\r\n limit: wastes.limit,\r\n reset: true,\r\n }\r\n return\r\n }\r\n\r\n const data = {\r\n new_data: wastes.data,\r\n data: [\r\n ...state.wastes.data,\r\n ...wastes.data,\r\n ],\r\n total_pages: wastes.total_pages,\r\n page: page,\r\n limit: wastes.limit,\r\n }\r\n\r\n state.wastes = data\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Failed to fetch wastes\\\\\\\\\\\\\\\', error)\r\n\r\n if (error.name === \\\\\\\\\\\\\\\'RequestTimeout\\\\\\\\\\\\\\\') {\r\n state.poorNetworkError = true\r\n }\r\n\r\n state.wastes = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n }, \r\n async setGarageViewPosts({\r\n state\r\n }, garage_id, page = 1) {\r\n const posts = await getPostsForGarage(garage_id, page)\r\n\r\n let prevData = state.garageViewPosts.data\r\n\r\n if (page === 1) {\r\n prevData = []\r\n }\r\n\r\n const data = {\r\n data: [\r\n ...prevData,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.garageViewPosts = data\r\n },\r\n async setGarageViewTags({\r\n state\r\n }, garage_id, page = 1) {\r\n const posts = await getPostsForGarage(garage_id, page, true)\r\n\r\n let prevData = state.garageViewTags.data\r\n\r\n if (page === 1) {\r\n prevData = []\r\n }\r\n\r\n const data = {\r\n data: [\r\n ...prevData,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.garageViewTags = data\r\n },\r\n async getFollowingPosts({\r\n state\r\n }, page = 1) {\r\n try {\r\n const posts = await fetchPosts(page, true)\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...state.following_posts.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.following_posts = data\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Failed to fetch following posts\\\\\\\\\\\\\\\', error)\r\n\r\n if (error.name === \\\\\\\\\\\\\\\'RequestTimeout\\\\\\\\\\\\\\\') {\r\n state.poorNetworkError = true\r\n }\r\n\r\n state.following_posts = {\r\n new_data: [],\r\n data: [],\r\n total_pages: 0,\r\n page: 1,\r\n limit: 10,\r\n }\r\n }\r\n },\r\n async setRegisterData({\r\n state\r\n }, {\r\n email,\r\n password,\r\n username,\r\n user_id\r\n }) {\r\n state.registerData = {\r\n email: email,\r\n password: password,\r\n username: username,\r\n user_id: user_id,\r\n }\r\n },\r\n async getMyGarage({\r\n state\r\n }) {\r\n const garage = await getUserGarage(state.user.id)\r\n state.myGarage = garage\r\n },\r\n async getMyPosts({\r\n state\r\n }, {\r\n page = 1,\r\n clear = false\r\n }) {\r\n const posts = await getPostsForUser(state.user.id, page)\r\n\r\n if (clear) {\r\n state.myPosts = {\r\n new_data: posts.data,\r\n data: posts.data,\r\n total_pages: posts.total_pages || 0,\r\n page: page,\r\n limit: posts.limit || 10,\r\n cleared: true,\r\n }\r\n return\r\n }\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...state.myPosts.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.myPosts = data\r\n },\r\n async getMyWastes({\r\n state\r\n }, {\r\n page = 1,\r\n clear = false\r\n }) \r\n {\r\n const wastes = await getWastesForUser(state.user.id, page)\r\n\r\n if (clear) {\r\n state.myWastes = {\r\n new_data: wastes.data,\r\n data: wastes.data,\r\n total_pages: wastes.total_pages || 0,\r\n page: page,\r\n limit: wastes.limit || 10,\r\n cleared: true,\r\n }\r\n return\r\n }\r\n\r\n const data = {\r\n new_data: wastes.data,\r\n data: [\r\n ...state.myWastes.data,\r\n ...wastes.data,\r\n ],\r\n total_pages: wastes.total_pages,\r\n page: page,\r\n limit: wastes.limit,\r\n }\r\n\r\n state.myWastes = data\r\n },\r\n\r\n async getMyTags({\r\n state\r\n }, {\r\n page = 1,\r\n clear = false\r\n }) {\r\n const posts = await getPostsForUser(state.user.id, page, true)\r\n\r\n if (clear) {\r\n state.myTags = {\r\n new_data: posts.data,\r\n data: posts.data,\r\n total_pages: posts.total_pages || 0,\r\n page: page,\r\n limit: posts.limit || 10,\r\n cleared: true,\r\n }\r\n return\r\n }\r\n\r\n const data = {\r\n new_data: posts.data,\r\n data: [\r\n ...state.myTags.data,\r\n ...posts.data,\r\n ],\r\n total_pages: posts.total_pages,\r\n page: page,\r\n limit: posts.limit,\r\n }\r\n\r\n state.myTags = data\r\n },\r\n setScannedData({\r\n state\r\n }, data) {\r\n state.scannedData = data\r\n },\r\n setScanningQrCode({\r\n state\r\n }, value) {\r\n state.scanningQrCode = value\r\n },\r\n },\r\n})\r\n\r\nexport default store');
Copy This

Warning: file_get_contents(/home/u340524018/domains/agniaga.com/public_html/sub/u7/collector/js/store.js---): Failed to open stream: No such file or directory in /home/u340524018/domains/agniaga.com/public_html/sub/u2/cp/inc.filejs.php on line 190
import {
  getNotificationCount,
  getSessionUser,
  getUserDetails,
  getUserNotifications,
  markMultipleNotificationsAsRead
} from \\\\\\\'./api/auth.js\\\\\\\'
import {
  sendRNMessage
} from \\\\\\\'./api/consts.js\\\\\\\'
import {
  fetchTrendingEvents,
  fetchTrendingUsers,
  fetchTrendingVenues,
  fetchEventCats
} from \\\\\\\'./api/discover.js\\\\\\\'
import {
  getPostsForGarage,
  getUserGarage
} from \\\\\\\'./api/garage.js\\\\\\\'
import {
  fetchPosts,
  getPostsForUser
} from \\\\\\\'./api/posts.js\\\\\\\'
import {
  fetchWastes,
  getWastesForUser
} from \\\\\\\'./api/waste.js\\\\\\\'

var createStore = Framework7.createStore

const DEFAULT_SEARCH_RESULTS = {
  events: {
    data: [],
    total_pages: 0,
    page: 1,
    limit: 10,
  },
  users: {
    data: [],
    total_pages: 0,
    page: 1,
    limit: 10,
  },
  venues: {
    data: [],
    total_pages: 0,
    page: 1,
    limit: 10,
  },
  top_results: {
    events: [],
    users: [],
    venues: [],
  },
  success: false,
}

const DEFAULT_PAGINATED_DATA = {
  data: [],
  new_data: [],
  total_pages: 0,
  page: 1,
  limit: 10,
}

const store = createStore({
  state: {
    user: null,
    posts: {
      new_data: [],
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    wastes: {
      new_data: [],
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    following_posts: {
      new_data: [],
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    registerData: {
      user_id: \\\\\\\'\\\\\\\',
      email: \\\\\\\'\\\\\\\',
      password: \\\\\\\'\\\\\\\',
      username: \\\\\\\'\\\\\\\',
    },
    myGarage: [],
    myPosts: {
      new_data: [],
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    myWastes: {
      new_data: [],
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    myTags: {
      new_data: [],
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    garageViewPosts: {
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    garageViewTags: {
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    scannedData: null,
    scanningQrCode: false,
    paths: {}, // Object to store unique paths and their data
    userPaths: {}, // Object to store unique user paths and their data
    userPathsUpdated: false,
    notifications: [],
    // discover page
    trendingEvents: [],
    trendingVenues: [],
    eventCategories: [],
    filteredEvents: {
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    filteredVenues: {
      data: [],
      total_pages: 0,
      page: 1,
      limit: 10,
    },
    discoverSearchData: DEFAULT_SEARCH_RESULTS,
    trendingUsers: DEFAULT_PAGINATED_DATA,
    // Search results
    searchResults: DEFAULT_SEARCH_RESULTS,
    notificationCount: 0,
    poorNetworkError: false,
  },
  getters: {
    checkPoorNetworkError({
      state
    }) {
      return state.poorNetworkError
    },
    getNotifCount({
      state
    }) {
      return state.notificationCount
    },
    getTrendingUsers({
      state
    }) {
      return state.trendingUsers
    },
    getSearchResults({
      state
    }) {
      return state.searchResults
    },
    getFilteredEvents({
      state
    }) {
      return state.filteredEvents
    },
    getFilteredVenues({
      state
    }) {
      return state.filteredVenues
    },
    getEventCategories({
      state
    }) {
      return state.eventCategories
    },
    getTrendingEvents({
      state
    }) {
      return state.trendingEvents
    },
    getTrendingVenues({
      state
    }) {
      return state.trendingVenues
    },
    getPathData({
      state
    }) {
      return state.paths
    },
    getUserPathUpdated({
      state
    }) {
      return state.userPathsUpdated
    },
    getUserPathData({
      state
    }) {
      return state.userPaths
    },
    getGarageViewPosts({
      state
    }) {
      return state.garageViewPosts
    },
    getGarageViewWastes({
      state
    }) {
      return state.garageViewWastes
    },
    getGarageViewTags({
      state
    }) {
      return state.garageViewTags
    },
    user({
      state
    }) {
      return state.user
    },
    getRegisterData({
      state
    }) {
      return state.registerData
    },
    isAuthenticated({
      state
    }) {
      return !!state.user
    },
    posts({
      state
    }) {
      return state.posts
    },
    wastes({
      state
    }) {
      return state.wastes
    },
    followingPosts({
      state
    }) {
      return state.following_posts
    },
    myGarage({
      state
    }) {
      return state.myGarage
    },
    myPosts({
      state
    }) {
      return state.myPosts
    },
    myWastes({
      state
    }) {
      return state.myWastes
    },
    myTags({
      state
    }) {
      return state.myTags
    },
    scannedData({
      state
    }) {
      return state.scannedData
    },
    isScanningQrCode({
      state
    }) {
      return state.scanningQrCode
    },
    getNotifications({
      state
    }) {
      return state.notifications
    },
  },
  actions: {
    updatePost({
      state
    }, {
      post_id,
      caption
    }) {
      // loop through the posts and find the post with the post_id
      const posts = state.posts.data
      const post = posts.find(p => p.id == post_id)

      const myPosts = state.myPosts.data
      const myPost = myPosts.find(p => p.id == post_id)

      // update the post with the new data
      if (post) {
        // update the post with the new data
        post.caption = caption
        // update the state with the new posts
        state.posts = {
          ...state.posts,
          data: posts,
        }
      }

      if (myPost) {
        myPost.caption = caption

        state.myPosts = {
          ...state.myPosts,
          data: myPosts,
        }
      }
    },
    markNotificationsAsRead({
      state
    }, notification_ids) {
      markMultipleNotificationsAsRead(notification_ids)
      state.notificationCount = 0
    },
    async notificationCount({
      state
    }) {
      const response = await getNotificationCount()
      state.notificationCount = response.count
    },
    setSearchResults({
      state
    }, payload) {
      state.searchResults = payload
    },
    async filterEvents({
      state
    }, {
      filters,
      page = 1
    }) {
      try {
        const events = await fetchTrendingEvents(page, true, filters)

        const data = {
          new_data: events.data,
          data: [
            ...state.filteredEvents.data,
            ...events.data,
          ],
          total_pages: events.total_pages,
          page: page,
          limit: events.limit,
        }

        state.filteredEvents = data
      } catch (error) {
        console.error(\\\\\\\'Failed to filter events\\\\\\\', error)
        state.filteredEvents = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },
    async filterTrendingUsers({
      state
    }, page = 1) {
      try {
        const response = await fetchTrendingUsers(page)

        const data = {
          new_data: response.data,
          data: [
            ...state.trendingUsers.data,
            ...response.data,
          ],
          total_pages: response.total_pages,
          page: page,
          limit: response.limit,
        }

        state.trendingUsers = data
      } catch (error) {
        console.log(\\\\\\\'Failed to fetch trending users\\\\\\\', error);
        state.trendingUsers = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },
    async filterVenues({
      state
    }, {
      filters,
      page = 1
    }) {
      try {
        const events = await fetchTrendingVenues(page, true, filters)

        let existingVenues = state.filteredVenues.data.length > 0 ? state.filteredVenues.data : state.trendingVenues.data

        const data = {
          new_data: events.data,
          data: [
            ...existingVenues,
            ...events.data,
          ],
          total_pages: events.total_pages,
          page: page,
          limit: events.limit,
        }

        state.filteredVenues = data
      } catch (error) {
        console.error(\\\\\\\'Failed to filter venues\\\\\\\', error)
        state.filteredVenues = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },
    async fetchEventCategories({
      state
    }) {
      const categories = await fetchEventCats()

      state.eventCategories = categories
    },
    async getTrendingEvents({
      state
    }) {
      const events = await fetchTrendingEvents(1, false)
      state.trendingEvents = events
    },
    async getTrendingVenues({
      state
    }) {
      const venues = await fetchTrendingVenues(1, false)
      state.trendingVenues = venues
    },
    async fetchNotifications({
      state
    }) {
      const notifications = await getUserNotifications()
      state.notifications = notifications
    },
    async getUserPosts({
      state
    }, {
      user_id,
      page = 1,
      clear = false
    }) {
      const posts = await getPostsForUser(user_id, page)

      let prevUserPosts = {
        data: []
      }

      if (!clear) {
        if (state.userPaths[`user-${user_id}-posts`]) {
          prevUserPosts = state.userPaths[`user-${user_id}-posts`]
        }
      }

      const data = {
        new_data: posts.data,
        data: [
          ...prevUserPosts.data,
          ...posts.data,
        ],
        total_pages: posts.total_pages,
        page: page,
        limit: posts.limit,
        cleared: clear,
      }

      state.userPaths[`user-${user_id}-posts`] = data
      state.userPathsUpdated = true
    },
    async getUserTags({
      state
    }, {
      user_id,
      page = 1,
      clear = false
    }) {
      const posts = await getPostsForUser(user_id, page, true)

      let prevUserPosts = {
        data: []
      }
      if (!clear) {
        if (state.userPaths[`user-${user_id}-tags`]) {
          prevUserPosts = state.userPaths[`user-${user_id}-tags`]
        }
      }

      const data = {
        new_data: posts.data,
        data: [
          ...prevUserPosts.data,
          ...posts.data,
        ],
        total_pages: posts.total_pages,
        page: page,
        limit: posts.limit,
        cleared: clear,
      }

      state.userPaths[`user-${user_id}-tags`] = data
      state.userPathsUpdated = true
    },
    clearPathData({
      state
    }) {
      state.paths = {}
    },
    setPathData({
      state
    }, {
      path,
      data
    }) {
      // Ensure the path key exists
      if (!state.paths[path]) {
        state.paths[path] = {}
      }

      // Update the data for the given path
      state.paths[path] = {
        ...state.paths[path],
        ...data,
      }
    },
    removePathData({
      state
    }, path) {
      if (state.paths[path]) {
        delete state.paths[path]
      }
    },
    async login({
      state
    }, {
      token
    }) {
      try {
        const userDetails = await getUserDetails(token)

        if (!userDetails || !userDetails.success) {
          window.localStorage.removeItem(\\\\\\\'token_u7_collector\\\\\\\')
          throw new Error(\\\\\\\'User not found\\\\\\\')
        }

        window.localStorage.setItem(\\\\\\\'token_u7_collector\\\\\\\', token)
        state.user = userDetails.user

        setTimeout(() => {
          sendRNMessage({
            type: \\\\\\\"authData\\\\\\\",
            user_id: userDetails.user.id,
            page: \\\\\\\'auth\\\\\\\',
          })
        }, 1000)
      } catch (error) {
        console.error(\\\\\\\'Login failed\\\\\\\', error)
      }
    },
    logout({
      state
    }) {
      state.user = null
      window.localStorage.removeItem(\\\\\\\'token_u7_collector\\\\\\\')
      window.location.reload()
    },
    async updateUserDetails({
      state
    }, external = false) {
      const token = window.localStorage.getItem(\\\\\\\'token_u7_collector\\\\\\\')

      if (!token) {
        return this.logout()
      }

      try {
        const userDetails = await getUserDetails(token)

        if (!userDetails || !userDetails.success) {
          window.localStorage.removeItem(\\\\\\\'token_u7_collector\\\\\\\')
          throw new Error(\\\\\\\'User not found\\\\\\\')
        }

        window.localStorage.setItem(\\\\\\\'token_u7_collector\\\\\\\', token)
        state.user = {
          ...userDetails.user,
          refreshed: true,
          external_refresh: external,
        }
      } catch (error) {
        console.error(\\\\\\\'Login failed\\\\\\\', error)
      }
    },
    async checkAuth(context) {
      const token = await getSessionUser()

      if (token) {
        await context.dispatch(\\\\\\\'login\\\\\\\', {
          token: token
        })
      } else {
        window.localStorage.removeItem(\\\\\\\'token_u7_collector\\\\\\\')
      }
    },
    async getPosts({
      state
    }, page = 1) {
      try {
        console.log(\\\\\\\'Fetching posts\\\\\\\', page);
        const posts = await fetchPosts(page)

        const data = {
          new_data: posts.data,
          data: [
            ...state.posts.data,
            ...posts.data,
          ],
          total_pages: posts.total_pages,
          page: posts.page,
          limit: posts.limit,
        }

        state.posts = data
      } catch (error) {
        console.error(\\\\\\\'Failed to fetch posts\\\\\\\', error)

        if (error.name === \\\\\\\'RequestTimeout\\\\\\\') {
          state.poorNetworkError = true
        }

        state.posts = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },
    /*
    async getPosts({
      state
    }, {
      page = 1,
      reset = false
    }) {
      try {
        console.log(\\\\\\\'Fetching posts\\\\\\\', page, reset);

        const posts = await fetchPosts(page)

        if (reset) {
          state.posts = {
            new_data: posts.data,
            data: posts.data,
            total_pages: posts.total_pages,
            page: page,
            limit: posts.limit,
            reset: true,
          }
          return
        }

        const data = {
          new_data: posts.data,
          data: [
            ...state.posts.data,
            ...posts.data,
          ],
          total_pages: posts.total_pages,
          page: page,
          limit: posts.limit,
        }

        state.posts = data
      } catch (error) {
        console.error(\\\\\\\'Failed to fetch posts\\\\\\\', error)

        if (error.name === \\\\\\\'RequestTimeout\\\\\\\') {
          state.poorNetworkError = true
        }

        state.posts = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },*/
    async getWastes({
      state
    }, {
      page = 1,
      reset = false
    }) {
      try {
        console.log(\\\\\\\'Fetching wastes\\\\\\\', page, reset);

        const wastes = await fetchWastes(page)

        if (reset) {
          state.wastes = {
            new_data: wastes.data,
            data: wastes.data,
            total_pages: wastes.total_pages,
            page: page,
            limit: wastes.limit,
            reset: true,
          }
          return
        }

        const data = {
          new_data: wastes.data,
          data: [
            ...state.wastes.data,
            ...wastes.data,
          ],
          total_pages: wastes.total_pages,
          page: page,
          limit: wastes.limit,
        }

        state.wastes = data
      } catch (error) {
        console.error(\\\\\\\'Failed to fetch wastes\\\\\\\', error)

        if (error.name === \\\\\\\'RequestTimeout\\\\\\\') {
          state.poorNetworkError = true
        }

        state.wastes = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },    
    async setGarageViewPosts({
      state
    }, garage_id, page = 1) {
      const posts = await getPostsForGarage(garage_id, page)

      let prevData = state.garageViewPosts.data

      if (page === 1) {
        prevData = []
      }

      const data = {
        data: [
          ...prevData,
          ...posts.data,
        ],
        total_pages: posts.total_pages,
        page: page,
        limit: posts.limit,
      }

      state.garageViewPosts = data
    },
    async setGarageViewTags({
      state
    }, garage_id, page = 1) {
      const posts = await getPostsForGarage(garage_id, page, true)

      let prevData = state.garageViewTags.data

      if (page === 1) {
        prevData = []
      }

      const data = {
        data: [
          ...prevData,
          ...posts.data,
        ],
        total_pages: posts.total_pages,
        page: page,
        limit: posts.limit,
      }

      state.garageViewTags = data
    },
    async getFollowingPosts({
      state
    }, page = 1) {
      try {
        const posts = await fetchPosts(page, true)

        const data = {
          new_data: posts.data,
          data: [
            ...state.following_posts.data,
            ...posts.data,
          ],
          total_pages: posts.total_pages,
          page: page,
          limit: posts.limit,
        }

        state.following_posts = data
      } catch (error) {
        console.error(\\\\\\\'Failed to fetch following posts\\\\\\\', error)

        if (error.name === \\\\\\\'RequestTimeout\\\\\\\') {
          state.poorNetworkError = true
        }

        state.following_posts = {
          new_data: [],
          data: [],
          total_pages: 0,
          page: 1,
          limit: 10,
        }
      }
    },
    async setRegisterData({
      state
    }, {
      email,
      password,
      username,
      user_id
    }) {
      state.registerData = {
        email: email,
        password: password,
        username: username,
        user_id: user_id,
      }
    },
    async getMyGarage({
      state
    }) {
      const garage = await getUserGarage(state.user.id)
      state.myGarage = garage
    },
    async getMyPosts({
      state
    }, {
      page = 1,
      clear = false
    }) {
      const posts = await getPostsForUser(state.user.id, page)

      if (clear) {
        state.myPosts = {
          new_data: posts.data,
          data: posts.data,
          total_pages: posts.total_pages || 0,
          page: page,
          limit: posts.limit || 10,
          cleared: true,
        }
        return
      }

      const data = {
        new_data: posts.data,
        data: [
          ...state.myPosts.data,
          ...posts.data,
        ],
        total_pages: posts.total_pages,
        page: page,
        limit: posts.limit,
      }

      state.myPosts = data
    },
    async getMyWastes({
      state
    }, {
      page = 1,
      clear = false
    }) 
    {
      const wastes = await getWastesForUser(state.user.id, page)

      if (clear) {
        state.myWastes = {
          new_data: wastes.data,
          data: wastes.data,
          total_pages: wastes.total_pages || 0,
          page: page,
          limit: wastes.limit || 10,
          cleared: true,
        }
        return
      }

      const data = {
        new_data: wastes.data,
        data: [
          ...state.myWastes.data,
          ...wastes.data,
        ],
        total_pages: wastes.total_pages,
        page: page,
        limit: wastes.limit,
      }

      state.myWastes = data
    },

    async getMyTags({
      state
    }, {
      page = 1,
      clear = false
    }) {
      const posts = await getPostsForUser(state.user.id, page, true)

      if (clear) {
        state.myTags = {
          new_data: posts.data,
          data: posts.data,
          total_pages: posts.total_pages || 0,
          page: page,
          limit: posts.limit || 10,
          cleared: true,
        }
        return
      }

      const data = {
        new_data: posts.data,
        data: [
          ...state.myTags.data,
          ...posts.data,
        ],
        total_pages: posts.total_pages,
        page: page,
        limit: posts.limit,
      }

      state.myTags = data
    },
    setScannedData({
      state
    }, data) {
      state.scannedData = data
    },
    setScanningQrCode({
      state
    }, value) {
      state.scanningQrCode = value
    },
  },
})

export default store
Add JS Function Name