feat: Add recent action indicators for invites and friend requests (#809)

This commit is contained in:
pa
2026-03-16 13:31:40 +09:00
parent 03bb1b5410
commit 9bf380f2fc
6 changed files with 160 additions and 5 deletions

View File

@@ -67,10 +67,16 @@
<DropdownMenuItem @click="onCommand('Request Invite')">
<Mail class="size-4" />
{{ t('dialog.user.actions.request_invite') }}
<DropdownMenuShortcut v-if="isActionRecent(userDialog.id, 'Request Invite')">
<Clock class="size-3.5 text-muted-foreground" />
</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem @click="onCommand('Request Invite Message')">
<Mail class="size-4" />
{{ t('dialog.user.actions.request_invite_with_message') }}
<DropdownMenuShortcut v-if="isActionRecent(userDialog.id, 'Request Invite Message')">
<Clock class="size-3.5 text-muted-foreground" />
</DropdownMenuShortcut>
</DropdownMenuItem>
<template v-if="isGameRunning">
<DropdownMenuItem
@@ -78,12 +84,18 @@
@click="onCommand('Invite')">
<MessageSquare class="size-4" />
{{ t('dialog.user.actions.invite') }}
<DropdownMenuShortcut v-if="isActionRecent(userDialog.id, 'Invite')">
<Clock class="size-3.5 text-muted-foreground" />
</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem
:disabled="!checkCanInvite(lastLocation.location)"
@click="onCommand('Invite Message')">
<MessageSquare class="size-4" />
{{ t('dialog.user.actions.invite_with_message') }}
<DropdownMenuShortcut v-if="isActionRecent(userDialog.id, 'Invite Message')">
<Clock class="size-3.5 text-muted-foreground" />
</DropdownMenuShortcut>
</DropdownMenuItem>
</template>
<DropdownMenuItem :disabled="!currentUser.isBoopingEnabled" @click="onCommand('Send Boop')">
@@ -110,6 +122,9 @@
<DropdownMenuItem v-else @click="onCommand('Send Friend Request')">
<Plus class="size-4" />
{{ t('dialog.user.actions.send_friend_request') }}
<DropdownMenuShortcut v-if="isActionRecent(userDialog.id, 'Send Friend Request')">
<Clock class="size-3.5 text-muted-foreground" />
</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem @click="onCommand('Invite To Group')">
<MessageSquare class="size-4" />
@@ -218,6 +233,7 @@
import {
Check,
CheckCircle,
Clock,
Flag,
LineChart,
Mail,
@@ -248,10 +264,12 @@
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuTrigger
} from '../../ui/dropdown-menu';
import { useGameStore, useLocationStore, useUserStore } from '../../../stores';
import { useInviteChecks } from '../../../composables/useInviteChecks';
import { isActionRecent } from '../../../composables/useRecentActions';
const props = defineProps({
userDialogCommand: {

View File

@@ -10,6 +10,7 @@ import {
} from '../../../api';
import { copyToClipboard, parseLocation } from '../../../shared/utils';
import { database } from '../../../services/database';
import { recordRecentAction } from '../../../composables/useRecentActions';
/**
* Composable for UserDialog command dispatch.
@@ -254,6 +255,7 @@ export function useUserDialogCommands(
)
.then((args) => {
toast('Request invite sent');
recordRecentAction(D().id, 'Request Invite');
return args;
});
},
@@ -272,6 +274,7 @@ export function useUserDialogCommands(
},
D().id
);
recordRecentAction(D().id, 'Invite Message');
});
},
'Request Invite Message': () => {
@@ -281,6 +284,7 @@ export function useUserDialogCommands(
},
D().id
);
recordRecentAction(D().id, 'Request Invite Message');
},
Invite: () => {
let currentLocation = lastLocation.value.location;
@@ -304,6 +308,7 @@ export function useUserDialogCommands(
)
.then((_args) => {
toast(t('message.invite.sent'));
recordRecentAction(D().id, 'Invite');
return _args;
});
});
@@ -463,6 +468,7 @@ export function useUserDialogCommands(
userId
});
handleSendFriendRequest(args);
recordRecentAction(userId, 'Send Friend Request');
}
},
'Moderation Unblock': {