You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							75 lines
						
					
					
						
							1.9 KiB
						
					
					
				import { ref, readonly, onMounted } from "vue"
 | 
						|
import { useStore } from "vuex"
 | 
						|
import { useRoute } from "vue-router"
 | 
						|
import axios from "axios"
 | 
						|
export function useSocialInfo() {
 | 
						|
  const store = useStore()
 | 
						|
  const route = useRoute()
 | 
						|
  const user = ref({})
 | 
						|
  const isCurrentUser = ref(true)
 | 
						|
  const groupInfo = ref({
 | 
						|
    isMember: false,
 | 
						|
    title: '',
 | 
						|
    description: '',
 | 
						|
    role: ''
 | 
						|
  })
 | 
						|
  const isGroup = ref(false)
 | 
						|
  const isLoading = ref(true)
 | 
						|
  const loadGroup = async (groupId) => {
 | 
						|
    isLoading.value = true
 | 
						|
    if (groupId) {
 | 
						|
      try {
 | 
						|
        const response = await axios.get(`/social-network/group-details/${groupId}`)
 | 
						|
        groupInfo.value = {
 | 
						|
          ...response.data,
 | 
						|
          isMember: response.data.isMember,
 | 
						|
          role: response.data.role,
 | 
						|
        }
 | 
						|
        isGroup.value = true
 | 
						|
      } catch (error) {
 | 
						|
        console.error("Error loading group:", error)
 | 
						|
        groupInfo.value = {}
 | 
						|
        isGroup.value = false
 | 
						|
      }
 | 
						|
      isLoading.value = false
 | 
						|
    } else {
 | 
						|
      isGroup.value = false
 | 
						|
      groupInfo.value = {}
 | 
						|
    }
 | 
						|
  }
 | 
						|
  const loadUser = async () => {
 | 
						|
    try {
 | 
						|
      if (route.query.id) {
 | 
						|
        user.value = await store.dispatch("user/load", '/api/users/' + route.query.id)
 | 
						|
        isCurrentUser.value = false
 | 
						|
      } else {
 | 
						|
        user.value = store.getters["security/getUser"]
 | 
						|
        isCurrentUser.value = true
 | 
						|
      }
 | 
						|
    } catch (e) {
 | 
						|
      user.value = {}
 | 
						|
      isCurrentUser.value = true
 | 
						|
    }
 | 
						|
  }
 | 
						|
  onMounted(async () => {
 | 
						|
    try {
 | 
						|
      //if (!route.params.group_id) {
 | 
						|
        await loadUser()
 | 
						|
      //}
 | 
						|
      if (route.params.group_id) {
 | 
						|
        await loadGroup(route.params.group_id)
 | 
						|
      }
 | 
						|
    } finally {
 | 
						|
      isLoading.value = false
 | 
						|
    }
 | 
						|
  })
 | 
						|
  return {
 | 
						|
    user: readonly(user),
 | 
						|
    isCurrentUser: readonly(isCurrentUser),
 | 
						|
    groupInfo: readonly(groupInfo),
 | 
						|
    isGroup: readonly(isGroup),
 | 
						|
    loadGroup,
 | 
						|
    loadUser,
 | 
						|
    isLoading,
 | 
						|
  }
 | 
						|
}
 | 
						|
 |