mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	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
		
		Reference in a new issue