refactor: follow button (#8789)
* fix: display cancelling follow request * remove unnecessary branch The executed code is the same as in the else branch so this special condition is unnecessary. * remove code duplication Use the same callback as later for updating these variables. * use $ref sugar * remove unused import Co-authored-by: blackskye-sx <saul.newman@gmail.com>
This commit is contained in:
		
							parent
							
								
									78df3dc484
								
							
						
					
					
						commit
						42f48ffea2
					
				
					 1 changed files with 14 additions and 20 deletions
				
			
		|  | @ -28,7 +28,7 @@ | |||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { onBeforeUnmount, onMounted, ref } from 'vue'; | ||||
| import { onBeforeUnmount, onMounted } from 'vue'; | ||||
| import * as Misskey from 'misskey-js'; | ||||
| import * as os from '@/os'; | ||||
| import { stream } from '@/stream'; | ||||
|  | @ -43,32 +43,30 @@ const props = withDefaults(defineProps<{ | |||
| 	large: false, | ||||
| }); | ||||
| 
 | ||||
| const isFollowing = ref(props.user.isFollowing); | ||||
| const hasPendingFollowRequestFromYou = ref(props.user.hasPendingFollowRequestFromYou); | ||||
| const wait = ref(false); | ||||
| let isFollowing = $ref(props.user.isFollowing); | ||||
| let hasPendingFollowRequestFromYou = $ref(props.user.hasPendingFollowRequestFromYou); | ||||
| let wait = $ref(false); | ||||
| const connection = stream.useChannel('main'); | ||||
| 
 | ||||
| if (props.user.isFollowing == null) { | ||||
| 	os.api('users/show', { | ||||
| 		userId: props.user.id | ||||
| 	}).then(u => { | ||||
| 		isFollowing.value = u.isFollowing; | ||||
| 		hasPendingFollowRequestFromYou.value = u.hasPendingFollowRequestFromYou; | ||||
| 	}); | ||||
| 	}) | ||||
| 	.then(onFollowChange); | ||||
| } | ||||
| 
 | ||||
| function onFollowChange(user: Misskey.entities.UserDetailed) { | ||||
| 	if (user.id === props.user.id) { | ||||
| 		isFollowing.value = user.isFollowing; | ||||
| 		hasPendingFollowRequestFromYou.value = user.hasPendingFollowRequestFromYou; | ||||
| 		isFollowing = user.isFollowing; | ||||
| 		hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| async function onClick() { | ||||
| 	wait.value = true; | ||||
| 	wait = true; | ||||
| 
 | ||||
| 	try { | ||||
| 		if (isFollowing.value) { | ||||
| 		if (isFollowing) { | ||||
| 			const { canceled } = await os.confirm({ | ||||
| 				type: 'warning', | ||||
| 				text: i18n.t('unfollowConfirm', { name: props.user.name || props.user.username }), | ||||
|  | @ -80,26 +78,22 @@ async function onClick() { | |||
| 				userId: props.user.id | ||||
| 			}); | ||||
| 		} else { | ||||
| 			if (hasPendingFollowRequestFromYou.value) { | ||||
| 			if (hasPendingFollowRequestFromYou) { | ||||
| 				await os.api('following/requests/cancel', { | ||||
| 					userId: props.user.id | ||||
| 				}); | ||||
| 			} else if (props.user.isLocked) { | ||||
| 				await os.api('following/create', { | ||||
| 					userId: props.user.id | ||||
| 				}); | ||||
| 				hasPendingFollowRequestFromYou.value = true; | ||||
| 				hasPendingFollowRequestFromYou = false; | ||||
| 			} else { | ||||
| 				await os.api('following/create', { | ||||
| 					userId: props.user.id | ||||
| 				}); | ||||
| 				hasPendingFollowRequestFromYou.value = true; | ||||
| 				hasPendingFollowRequestFromYou = true; | ||||
| 			} | ||||
| 		} | ||||
| 	} catch (err) { | ||||
| 		console.error(err); | ||||
| 	} finally { | ||||
| 		wait.value = false; | ||||
| 		wait = false; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue