mirror of https://github.com/nocodb/nocodb
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.
70 lines
1.6 KiB
70 lines
1.6 KiB
import { extractSdkResponseErrorMsg, useGlobal, useNuxtApp, useRouter } from '#imports' |
|
|
|
export function useProfile() { |
|
const { user } = useGlobal() |
|
|
|
const { $api } = useNuxtApp() |
|
|
|
const router = useRouter() |
|
|
|
const profile = ref() |
|
|
|
const isFollowing = ref() |
|
|
|
const loadIsFollowingUser = async (userId: string) => { |
|
if (!userId) return |
|
try { |
|
isFollowing.value = await $api.orgUsers.isFollowing(user.value!.id, userId) |
|
} catch (e: any) { |
|
message.error(await extractSdkResponseErrorMsg(e)) |
|
} |
|
} |
|
|
|
const loadProfile = async (username: string) => { |
|
if (!username) return |
|
|
|
try { |
|
const user = await $api.orgUsers.getByUsername(username) |
|
profile.value = await $api.orgUsers.profileGet(user.id) |
|
await loadIsFollowingUser(user.id) |
|
} catch (e: any) { |
|
if (e?.response?.status === 404) { |
|
return router.push('/error/404') |
|
} |
|
throw e |
|
} |
|
} |
|
|
|
const followUser = async (userId: string) => { |
|
if (!userId) return |
|
try { |
|
$api.orgUsers.followerCreate(user.value!.id, { |
|
fk_follower_id: userId, |
|
}) |
|
await loadProfile(profile.value.user_name) |
|
} catch (e: any) { |
|
message.error(await extractSdkResponseErrorMsg(e)) |
|
} |
|
} |
|
|
|
const unfollowUser = async (userId: string) => { |
|
if (!userId) return |
|
try { |
|
$api.orgUsers.followerDelete(user.value!.id, { |
|
fk_follower_id: userId, |
|
}) |
|
await loadProfile(profile.value.user_name) |
|
} catch (e: any) { |
|
message.error(await extractSdkResponseErrorMsg(e)) |
|
} |
|
} |
|
|
|
return { |
|
loadProfile, |
|
profile, |
|
followUser, |
|
unfollowUser, |
|
loadIsFollowingUser, |
|
isFollowing, |
|
} |
|
}
|
|
|