import { ref } from 'vue' import { defineStore } from 'pinia' import type { VillageListItem } from '@/api/light/LightVillageApi'; import FollowVillageApi from '@/api/light/FollowVillageApi'; import LightVillageApi from '@/api/light/LightVillageApi'; /** * 村庄各页面共享 数据 */ export const useVillageStore = defineStore('village', () => { const currentVillage = ref(null); const currentLonlat = ref<{ longitude: number, latitude: number } | null>(null); const myFollowVillages = ref([]); const myJoinedVillages = ref([]); async function setCurrentVillage(village: VillageListItem) { currentVillage.value = await LightVillageApi.getVillageDetails(village.id); console.log('切换当前激活村社', currentVillage.value); uni.setStorageSync('currentVillage', village.id); } function loadCurrentVillage() { return uni.getStorageSync('currentVillage') as number|unknown; } async function reloadVillageInfo() { try { if (!currentVillage.value) return null; const oldVillage = currentVillage.value.clone(); await setCurrentVillage(oldVillage as VillageListItem); return oldVillage; } catch (error) { console.error(error); return null; } } function setCurrentLonlat(lonlat: { longitude: number, latitude: number }) { currentLonlat.value = lonlat; } async function loadMyFollowVillages() { const villages = await FollowVillageApi.getFollowVillageList(); myFollowVillages.value = villages.list; } async function loadMyJoinedVillages() { const res = await FollowVillageApi.getClaimedVallageList(); myJoinedVillages.value = res; } return { currentVillage, currentLonlat, myFollowVillages, myJoinedVillages, loadCurrentVillage, reloadVillageInfo, setCurrentVillage, setCurrentLonlat, loadMyFollowVillages, loadMyJoinedVillages, } })