mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-17 05:43:51 +02:00
refactor: dialogs (#1224)
* refactor: dialogs * fix: storeAvatarImage * FriendLog.vue * FriendLog.vue * FriendLog.vue * GameLog.vue * fix: next day button jumping to the wrong date * sync master * fix: launchGame * Notification.vue * Feed.vue * Search.vue * Profile.vue * PlayerList.vue * Login.vue * utils * update dialog * del gameLog.pug * fix * fix: group role cannot be displayed currently * fix: "Hide Friends in Same Instance" hides players in unrelated private instances (#1210) * fix * fix: "Hide Friends in Same Instance" does not work when "Split Favorite Friends" is enabled * fix Notification.vue message * fix: deleteFavoriteNoConfirm * fix: feed status style * fix: infinite loading when deleting note * fix: private players will not be hidden when 'Hide Friends in Same Instance', and 'Hide Friends in Same Instance' will not work when 'Split Favorite Friends'
This commit is contained in:
277
src/components/dialogs/SendBoopDialog.vue
Normal file
277
src/components/dialogs/SendBoopDialog.vue
Normal file
@@ -0,0 +1,277 @@
|
||||
<!--<template>-->
|
||||
<!-- <safe-dialog-->
|
||||
<!-- class="x-dialog"-->
|
||||
<!-- :visible="sendBoopDialog.visible"-->
|
||||
<!-- :title="t('dialog.boop_dialog.header')"-->
|
||||
<!-- width="450px"-->
|
||||
<!-- @close="closeDialog">-->
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="sendBoopDialog.userId"-->
|
||||
<!-- :placeholder="t('dialog.new_instance.instance_creator_placeholder')"-->
|
||||
<!-- filterable-->
|
||||
<!-- style="width: 100%">-->
|
||||
<!-- <el-option-group v-if="vipFriends.length" :label="t('side_panel.favorite')">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="friend in vipFriends"-->
|
||||
<!-- :key="friend.id"-->
|
||||
<!-- class="x-friend-item"-->
|
||||
<!-- :label="friend.name"-->
|
||||
<!-- :value="friend.id"-->
|
||||
<!-- style="height: auto">-->
|
||||
<!-- <template v-if="friend.ref">-->
|
||||
<!-- <div class="avatar" :class="userStatusClass(friend.ref)">-->
|
||||
<!-- <img v-lazy="userImage(friend.ref)" />-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <span-->
|
||||
<!-- class="name"-->
|
||||
<!-- :style="{ color: friend.ref.$userColour }"-->
|
||||
<!-- v-text="friend.ref.displayName"></span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- <span v-else v-text="friend.id"></span>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-option-group>-->
|
||||
<!-- <el-option-group v-if="onlineFriends.length" :label="t('side_panel.online')">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="friend in onlineFriends"-->
|
||||
<!-- :key="friend.id"-->
|
||||
<!-- class="x-friend-item"-->
|
||||
<!-- :label="friend.name"-->
|
||||
<!-- :value="friend.id"-->
|
||||
<!-- style="height: auto">-->
|
||||
<!-- <template v-if="friend.ref">-->
|
||||
<!-- <div class="avatar" :class="userStatusClass(friend.ref)">-->
|
||||
<!-- <img v-lazy="userImage(friend.ref)" />-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <span-->
|
||||
<!-- class="name"-->
|
||||
<!-- :style="{ color: friend.ref.$userColour }"-->
|
||||
<!-- v-text="friend.ref.displayName"></span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- <span v-else v-text="friend.id"></span>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-option-group>-->
|
||||
<!-- <el-option-group v-if="activeFriends.length" :label="t('side_panel.active')">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="friend in activeFriends"-->
|
||||
<!-- :key="friend.id"-->
|
||||
<!-- class="x-friend-item"-->
|
||||
<!-- :label="friend.name"-->
|
||||
<!-- :value="friend.id"-->
|
||||
<!-- style="height: auto">-->
|
||||
<!-- <template v-if="friend.ref">-->
|
||||
<!-- <div class="avatar">-->
|
||||
<!-- <img v-lazy="userImage(friend.ref)" />-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <span-->
|
||||
<!-- class="name"-->
|
||||
<!-- :style="{ color: friend.ref.$userColour }"-->
|
||||
<!-- v-text="friend.ref.displayName"></span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- <span v-else v-text="friend.id"></span>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-option-group>-->
|
||||
<!-- <el-option-group v-if="offlineFriends.length" :label="t('side_panel.offline')">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="friend in offlineFriends"-->
|
||||
<!-- :key="friend.id"-->
|
||||
<!-- class="x-friend-item"-->
|
||||
<!-- :label="friend.name"-->
|
||||
<!-- :value="friend.id"-->
|
||||
<!-- style="height: auto">-->
|
||||
<!-- <template v-if="friend.ref">-->
|
||||
<!-- <div class="avatar">-->
|
||||
<!-- <img v-lazy="userImage(friend.ref)" />-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <span-->
|
||||
<!-- class="name"-->
|
||||
<!-- :style="{ color: friend.ref.$userColour }"-->
|
||||
<!-- v-text="friend.ref.displayName"></span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- <span v-else v-text="friend.id"></span>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-option-group>-->
|
||||
<!-- </el-select>-->
|
||||
|
||||
<!-- <br />-->
|
||||
<!-- <br />-->
|
||||
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="fileId"-->
|
||||
<!-- clearable-->
|
||||
<!-- :placeholder="t('dialog.boop_dialog.select_emoji')"-->
|
||||
<!-- size="small"-->
|
||||
<!-- style="width: 100%"-->
|
||||
<!-- popper-class="max-height-el-select">-->
|
||||
<!-- <el-option-group :label="t('dialog.boop_dialog.my_emojis')">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="image in emojiTable"-->
|
||||
<!-- v-if="image.versions && image.versions.length > 0"-->
|
||||
<!-- :key="image.id"-->
|
||||
<!-- :value="image.id"-->
|
||||
<!-- style="width: 100%; height: 100%">-->
|
||||
<!-- <div-->
|
||||
<!-- v-if="image.versions[image.versions.length - 1].file.url"-->
|
||||
<!-- class="vrcplus-icon"-->
|
||||
<!-- style="overflow: hidden; width: 200px; height: 200px; padding: 10px">-->
|
||||
<!-- <template v-if="image.frames">-->
|
||||
<!-- <div-->
|
||||
<!-- class="avatar"-->
|
||||
<!-- :style="-->
|
||||
<!-- generateEmojiStyle(-->
|
||||
<!-- image.versions[image.versions.length - 1].file.url,-->
|
||||
<!-- image.framesOverTime,-->
|
||||
<!-- image.frames,-->
|
||||
<!-- image.loopStyle-->
|
||||
<!-- )-->
|
||||
<!-- "></div>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template v-else>-->
|
||||
<!-- <img-->
|
||||
<!-- v-lazy="image.versions[image.versions.length - 1].file.url"-->
|
||||
<!-- class="avatar"-->
|
||||
<!-- style="width: 200px; height: 200px" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-option-group>-->
|
||||
<!-- <el-option-group :label="t('dialog.boop_dialog.default_emojis')">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="emojiName in photonEmojis"-->
|
||||
<!-- :key="emojiName"-->
|
||||
<!-- :value="getEmojiValue(emojiName)"-->
|
||||
<!-- style="width: 100%; height: 100%">-->
|
||||
<!-- <span v-text="emojiName"></span>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-option-group>-->
|
||||
<!-- </el-select>-->
|
||||
|
||||
<!-- <template #footer>-->
|
||||
<!-- <el-button size="small" @click="showGalleryDialog(2)">{{-->
|
||||
<!-- t('dialog.boop_dialog.emoji_manager')-->
|
||||
<!-- }}</el-button>-->
|
||||
<!-- <el-button size="small" @click="closeDialog">{{ t('dialog.boop_dialog.cancel') }}</el-button>-->
|
||||
<!-- <el-button size="small" :disabled="!sendBoopDialog.userId" @click="sendBoop">{{-->
|
||||
<!-- t('dialog.boop_dialog.send')-->
|
||||
<!-- }}</el-button>-->
|
||||
<!-- </template>-->
|
||||
<!-- </safe-dialog>-->
|
||||
<!--</template>-->
|
||||
|
||||
<!--<script setup>-->
|
||||
<!-- import { inject, ref } from 'vue';-->
|
||||
<!-- import { useI18n } from 'vue-i18n-bridge';-->
|
||||
<!-- import { photonEmojis } from '../../composables/shared/constants/photon.js';-->
|
||||
<!-- import { notificationRequest } from '../../api';-->
|
||||
<!-- // import { miscRequest } from '../../api';-->
|
||||
|
||||
<!-- const { t } = useI18n();-->
|
||||
|
||||
<!-- const userStatusClass = inject('userStatusClass');-->
|
||||
<!-- const userImage = inject('userImage');-->
|
||||
<!-- const showGalleryDialog = inject('showGalleryDialog');-->
|
||||
|
||||
<!-- const props = defineProps({-->
|
||||
<!-- sendBoopDialog: {-->
|
||||
<!-- type: Object,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- emojiTable: {-->
|
||||
<!-- type: Array,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- vipFriends: {-->
|
||||
<!-- type: Array,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- onlineFriends: {-->
|
||||
<!-- type: Array,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- activeFriends: {-->
|
||||
<!-- type: Array,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- offlineFriends: {-->
|
||||
<!-- type: Array,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- generateEmojiStyle: {-->
|
||||
<!-- type: Function,-->
|
||||
<!-- required: true-->
|
||||
<!-- },-->
|
||||
<!-- notificationTable: {-->
|
||||
<!-- type: Object,-->
|
||||
<!-- required: true-->
|
||||
<!-- }-->
|
||||
<!-- });-->
|
||||
|
||||
<!-- const emit = defineEmits(['update:sendBoopDialog']);-->
|
||||
|
||||
<!-- const fileId = ref('');-->
|
||||
|
||||
<!-- // $app.data.sendBoopDialog = {-->
|
||||
<!-- // visible: false,-->
|
||||
<!-- // userId: ''-->
|
||||
<!-- // };-->
|
||||
<!-- // $app.methods.showSendBoopDialog = function (userId) {-->
|
||||
<!-- // this.$nextTick(() =>-->
|
||||
<!-- // $app.adjustDialogZ(this.$refs.sendBoopDialog.$el)-->
|
||||
<!-- // );-->
|
||||
<!-- // const D = this.sendBoopDialog;-->
|
||||
<!-- // D.userId = userId;-->
|
||||
<!-- // D.visible = true;-->
|
||||
<!-- // if (this.emojiTable.length === 0 && API.currentUser.$isVRCPlus) {-->
|
||||
<!-- // this.refreshEmojiTable();-->
|
||||
<!-- // }-->
|
||||
<!-- // };-->
|
||||
|
||||
<!-- function closeDialog() {-->
|
||||
<!-- emit('update:sendBoopDialog', {-->
|
||||
<!-- ...props.sendBoopDialog,-->
|
||||
<!-- visible: false-->
|
||||
<!-- });-->
|
||||
<!-- }-->
|
||||
<!-- function getEmojiValue(emojiName) {-->
|
||||
<!-- if (!emojiName) {-->
|
||||
<!-- return '';-->
|
||||
<!-- }-->
|
||||
<!-- return `vrchat_${emojiName.replace(/ /g, '_').toLowerCase()}`;-->
|
||||
<!-- }-->
|
||||
|
||||
<!-- function sendBoop() {-->
|
||||
<!-- const D = props.sendBoopDialog;-->
|
||||
<!-- dismissBoop(D.userId);-->
|
||||
<!-- const params = {-->
|
||||
<!-- userId: D.userId-->
|
||||
<!-- };-->
|
||||
<!-- if (fileId.value) {-->
|
||||
<!-- params.emojiId = fileId.value;-->
|
||||
<!-- }-->
|
||||
<!-- // miscRequest.sendBoop(params);-->
|
||||
<!-- D.visible = false;-->
|
||||
<!-- }-->
|
||||
|
||||
<!-- function dismissBoop(userId) {-->
|
||||
<!-- // JANK: This is a hack to remove boop notifications when responding-->
|
||||
<!-- const array = props.notificationTable.data;-->
|
||||
<!-- for (let i = array.length - 1; i >= 0; i--) {-->
|
||||
<!-- const ref = array[i];-->
|
||||
<!-- if (ref.type !== 'boop' || ref.$isExpired || ref.senderUserId !== userId) {-->
|
||||
<!-- continue;-->
|
||||
<!-- }-->
|
||||
<!-- notificationRequest.sendNotificationResponse({-->
|
||||
<!-- notificationId: ref.id,-->
|
||||
<!-- responseType: 'delete',-->
|
||||
<!-- responseData: ''-->
|
||||
<!-- });-->
|
||||
<!-- }-->
|
||||
<!-- }-->
|
||||
<!--</script>-->
|
||||
Reference in New Issue
Block a user