mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-21 15:53:50 +02:00
feat: add social status presets (#252)
This commit is contained in:
@@ -108,6 +108,21 @@
|
||||
</ContextMenuCheckboxItem>
|
||||
</ContextMenuSubContent>
|
||||
</ContextMenuSub>
|
||||
<ContextMenuSub v-if="statusPresets.length">
|
||||
<ContextMenuSubTrigger>
|
||||
{{ t('dialog.social_status.presets') }}
|
||||
</ContextMenuSubTrigger>
|
||||
<ContextMenuSubContent>
|
||||
<ContextMenuItem
|
||||
v-for="(preset, idx) in statusPresets"
|
||||
:key="idx"
|
||||
class="gap-2"
|
||||
@click="applyStatusPreset(preset)">
|
||||
<i class="x-user-status" :class="presetStatusClass(preset.status)"></i>
|
||||
<span class="truncate max-w-[180px]">{{ getPresetDisplayText(preset) }}</span>
|
||||
</ContextMenuItem>
|
||||
</ContextMenuSubContent>
|
||||
</ContextMenuSub>
|
||||
</ContextMenuContent>
|
||||
</ContextMenu>
|
||||
</template>
|
||||
@@ -218,6 +233,7 @@
|
||||
import FriendItem from './FriendItem.vue';
|
||||
import Location from '../../../components/Location.vue';
|
||||
import configRepository from '../../../services/config';
|
||||
import { useStatusPresets } from '../../../components/dialogs/UserDialog/composables/useStatusPresets';
|
||||
|
||||
import '@/styles/status-icon.css';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
@@ -252,6 +268,7 @@
|
||||
const { currentUser } = storeToRefs(useUserStore());
|
||||
const { checkCanInvite, checkCanInviteSelf } = useInviteChecks();
|
||||
const { userImage, userStatusClass } = useUserDisplay();
|
||||
const { presets: statusPresets, getStatusClass: presetStatusClass } = useStatusPresets();
|
||||
|
||||
const isFriendsGroupMe = ref(true);
|
||||
const isVIPFriends = ref(true);
|
||||
@@ -720,6 +737,23 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getPresetDisplayText(preset) {
|
||||
if (preset.statusDescription) return preset.statusDescription;
|
||||
const option = statusOptions.value.find((o) => o.value === preset.status);
|
||||
return option?.label || preset.status;
|
||||
}
|
||||
|
||||
function applyStatusPreset(preset) {
|
||||
userRequest
|
||||
.saveCurrentUser({
|
||||
status: preset.status,
|
||||
statusDescription: preset.statusDescription
|
||||
})
|
||||
.then(() => {
|
||||
toast.success('Status updated');
|
||||
});
|
||||
}
|
||||
|
||||
const canInviteToMyLocation = computed(() => checkCanInvite(lastLocation.value.location));
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user