import { computed, nextTick, onMounted, reactive, ref, watch } from 'vue';
- import { ChevronDown, User } from 'lucide-vue-next';
+ import { ChevronDown, Clock, User } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
@@ -205,6 +211,7 @@
ContextMenuContent,
ContextMenuItem,
ContextMenuSeparator,
+ ContextMenuShortcut,
ContextMenuSub,
ContextMenuSubContent,
ContextMenuSubTrigger,
@@ -225,6 +232,7 @@
import { getFriendsSortFunction, isRealInstance } from '../../../shared/utils';
import { instanceRequest, notificationRequest, queryRequest, userRequest } from '../../../api';
import { useInviteChecks } from '../../../composables/useInviteChecks';
+ import { isActionRecent, recordRecentAction } from '../../../composables/useRecentActions';
import { useUserDisplay } from '../../../composables/useUserDisplay';
import { getFriendsLocations } from '../../../shared/utils/location.js';
import { parseLocation } from '../../../shared/utils';
@@ -793,6 +801,7 @@
*/
function friendRequestInvite(friend) {
notificationRequest.sendRequestInvite({ platform: 'standalonewindows' }, friend.id).then(() => {
+ recordRecentAction(friend.id, 'Request Invite');
toast.success('Request invite sent');
});
}
@@ -817,6 +826,7 @@
friend.id
)
.then(() => {
+ recordRecentAction(friend.id, 'Invite');
toast.success(t('message.invite.sent'));
});
});
diff --git a/src/views/Sidebar/components/__tests__/FriendsSidebar.test.js b/src/views/Sidebar/components/__tests__/FriendsSidebar.test.js
index adfa88dc..e303caf3 100644
--- a/src/views/Sidebar/components/__tests__/FriendsSidebar.test.js
+++ b/src/views/Sidebar/components/__tests__/FriendsSidebar.test.js
@@ -180,6 +180,7 @@ vi.mock('../../../../components/ui/context-menu', () => ({
''
},
ContextMenuSeparator: { template: '
' },
+ ContextMenuShortcut: { template: '' },
ContextMenuSub: { template: '
' },
ContextMenuSubContent: { template: '
' },
ContextMenuSubTrigger: { template: '
' },
@@ -210,9 +211,15 @@ vi.mock('../FriendItem.vue', () => ({
vi.mock('lucide-vue-next', () => ({
ChevronDown: { template: '' },
+ Clock: { template: '' },
User: { template: '' }
}));
+vi.mock('../../../../composables/useRecentActions', () => ({
+ isActionRecent: vi.fn(() => false),
+ recordRecentAction: vi.fn()
+}));
+
import FriendsSidebar from '../FriendsSidebar.vue';
function flushPromises() {
diff --git a/src/views/Tools/ScreenshotMetadata.vue b/src/views/Tools/ScreenshotMetadata.vue
index 6452cf2b..c7c723bf 100644
--- a/src/views/Tools/ScreenshotMetadata.vue
+++ b/src/views/Tools/ScreenshotMetadata.vue
@@ -182,18 +182,14 @@
{{ t('dialog.screenshot_metadata.section_players') }} ({{ screenshotMetadataDialog.metadata.players.length }})
-
-
- {{ user.displayName }}
-
-
+ variant="secondary"
+ class="cursor-pointer hover:bg-accent transition-colors"
+ @click="lookupUser(user)">
+ {{ user.displayName }}
+
@@ -267,7 +263,7 @@
import { ButtonGroup } from '@/components/ui/button-group';
import { InputGroupSearch } from '@/components/ui/input-group';
import { Kbd } from '@/components/ui/kbd';
- import { TooltipWrapper } from '@/components/ui/tooltip';
+
import { formatDateFilter } from '@/shared/utils';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';