// store/groupStore.js
const groupModule = {
	namespaced: true,

	state: () => ({
		groups: []
	}),

	mutations: {
		SET_GROUPS(state, groups) {
			state.groups = groups
		},
		ADD_GROUP(state, group) {
			// 使用 unshift 插入到列表头部（与 Pinia 保持一致）
			state.groups.unshift(group)
		},
		UPDATE_GROUP(state, group) {
			const g = state.groups.find(item => item.id === group.id)
			if (g) {
				Object.assign(g, group)
			}
		},
		REMOVE_GROUP(state, id) {
			state.groups.filter(g => g.id === id).forEach(g => g.quit = true)
		},
		CLEAR_GROUPS(state) {
			state.groups = []
		}
	},

	actions: {
		// 设置群组列表
		setGroups({ commit }, groups) {
			commit('SET_GROUPS', groups)
		},

		// 添加或更新群组
		addGroup({ commit, state }, group) {
			const exists = state.groups.some(g => g.id === group.id)
			if (exists) {
				commit('UPDATE_GROUP', group)
			} else {
				commit('ADD_GROUP', group)
			}
		},

		// 删除群组（逻辑删除）
		removeGroup({ commit }, id) {
			commit('REMOVE_GROUP', id)
		},

		// 更新群组信息
		updateGroup({ commit }, group) {
			commit('UPDATE_GROUP', group)
		},

		// 清空群组列表
		clear({ commit }) {
			commit('CLEAR_GROUPS')
		},

		// 加载群组列表（异步）
		async loadGroup({ dispatch }) {
			try {
				const groups = await uni.$http.get('/api/group/list')
				dispatch('setGroups', groups.data.data)
			} catch (error) {
				// 将错误抛出，让调用方处理
				throw error
			}
		}
	},

	getters: {
		findGroup: (state) => (id) => {
			return state.groups.find(g => g.id === id)
		}
	}
}

export default groupModule
