Add support for prints

This commit is contained in:
Natsumi
2024-11-16 10:32:43 +13:00
parent f3a81ba702
commit f56f1b8a83
9 changed files with 278 additions and 9 deletions

View File

@@ -7573,6 +7573,7 @@ speechSynthesis.getVoices();
},
layout: 'table'
};
$app.data.printTable = [];
$app.data.stickerTable = [];
$app.data.emojiTable = [];
$app.data.VRCPlusIconsTable = [];
@@ -16068,8 +16069,11 @@ speechSynthesis.getVoices();
// D.metadata.resolution = `${regex[18]}x${regex[19]}`;
}
}
if (metadata.timestamp) {
D.metadata.dateTime = Date.parse(metadata.timestamp);
}
if (!D.metadata.dateTime) {
D.metadata.dateTime = Date.parse(json.creationDate);
D.metadata.dateTime = Date.parse(metadata.creationDate);
}
if (this.fullscreenImageDialog?.visible) {
@@ -17120,6 +17124,7 @@ speechSynthesis.getVoices();
$app.data.galleryDialogIconsLoading = false;
$app.data.galleryDialogEmojisLoading = false;
$app.data.galleryDialogStickersLoading = false;
$app.data.galleryDialogPrintsLoading = false;
API.$on('LOGIN', function () {
$app.galleryTable = [];
@@ -17132,6 +17137,7 @@ speechSynthesis.getVoices();
this.refreshVRCPlusIconsTable();
this.refreshEmojiTable();
this.refreshStickerTable();
this.refreshPrintTable();
workerTimers.setTimeout(() => this.setGalleryTab(pageNum), 100);
};
@@ -17395,6 +17401,120 @@ speechSynthesis.getVoices();
}
});
// #endregion
// #region | Prints
API.$on('LOGIN', function () {
$app.printTable = [];
});
$app.methods.refreshPrintTable = function () {
this.galleryDialogPrintsLoading = true;
var params = {
n: 100,
tag: 'print'
};
API.getFileList(params);
};
API.$on('FILES:LIST', function (args) {
if (args.params.tag === 'print') {
$app.printTable = args.json.reverse();
$app.galleryDialogPrintsLoading = false;
}
});
$app.methods.deletePrint = function (fileId) {
API.deleteFile(fileId).then((args) => {
API.$emit('PRINT:DELETE', args);
return args;
});
};
API.$on('PRINT:DELETE', function (args) {
var array = $app.printTable;
var { length } = array;
for (var i = 0; i < length; ++i) {
if (args.fileId === array[i].id) {
array.splice(i, 1);
break;
}
}
});
$app.methods.onFileChangePrint = function (e) {
var clearFile = function () {
if (document.querySelector('#PrintUploadButton')) {
document.querySelector('#PrintUploadButton').value = '';
}
};
var files = e.target.files || e.dataTransfer.files;
if (!files.length) {
return;
}
if (files[0].size >= 100000000) {
// 100MB
$app.$message({
message: 'File size too large',
type: 'error'
});
clearFile();
return;
}
if (!files[0].type.match(/image.*/)) {
$app.$message({
message: "File isn't an image",
type: 'error'
});
clearFile();
return;
}
var r = new FileReader();
r.onload = function () {
var date = new Date();
var timestamp = date.toISOString().slice(0, 19);
var params = {
note: 'test print',
worldId: 'wrld_10e5e467-fc65-42ed-8957-f02cace1398c',
timestamp
};
var base64Body = btoa(r.result);
API.uploadPrint(base64Body, params).then((args) => {
$app.$message({
message: 'Print uploaded',
type: 'success'
});
return args;
});
};
r.readAsBinaryString(files[0]);
clearFile();
};
$app.methods.displayPrintUpload = function () {
document.getElementById('PrintUploadButton').click();
};
API.uploadPrint = function (imageData, params) {
return this.call('prints', {
uploadImagePrint: true,
postData: JSON.stringify(params),
imageData
}).then((json) => {
var args = {
json,
params
};
this.$emit('PRINT:ADD', args);
return args;
});
};
API.$on('PRINT:ADD', function (args) {
if (Object.keys($app.printTable).length !== 0) {
$app.printTable.unshift(args.json);
}
});
// #endregion
// #region | Emoji

View File

@@ -559,7 +559,11 @@ export default class extends baseClass {
props: {
userid: String,
location: String,
key: Number
key: Number,
hint: {
type: String,
default: ''
}
},
data() {
return {
@@ -569,7 +573,9 @@ export default class extends baseClass {
methods: {
async parse() {
this.username = this.userid;
if (this.userid) {
if (this.hint) {
this.username = this.hint;
} else if (this.userid) {
var args = await API.getCachedUser({
userId: this.userid
});

View File

@@ -525,6 +525,10 @@ export default class extends baseClass {
if ($app.galleryDialogVisible) {
$app.refreshEmojiTable();
}
} else if (contentType === 'print') {
if ($app.galleryDialogVisible) {
$app.refreshPrintTable();
}
} else if (contentType === 'avatar') {
// hmm, utilizing this might be too spamy and cause UI to move around
} else if (contentType === 'world') {

View File

@@ -1266,6 +1266,7 @@
"icons": "Icons",
"emojis": "Emojis",
"stickers": "Stickers",
"prints": "Prints",
"refresh": "Refresh",
"upload": "Upload",
"clear": "Clear",

View File

@@ -78,7 +78,7 @@ mixin currentUser()
.vrcplus-icon(v-if="image.versions[image.versions.length - 1].file.url" @click="setProfilePicOverride(image.id)" :class="{ 'current-vrcplus-icon': compareCurrentProfilePic(image.id) }")
img.avatar(v-lazy="image.versions[image.versions.length - 1].file.url")
div(style="float:right;margin-top:5px")
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-download" circle)
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-picture-outline" circle)
el-button(type="default" @click="deleteGalleryImage(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
el-tab-pane(v-if="galleryDialogVisible" v-loading="galleryDialogIconsLoading")
span(slot="label") {{ $t('dialog.gallery_icons.icons') }}
@@ -93,7 +93,7 @@ mixin currentUser()
.vrcplus-icon(v-if="image.versions[image.versions.length - 1].file.url" @click="setVRCPlusIcon(image.id)" :class="{ 'current-vrcplus-icon': compareCurrentVRCPlusIcon(image.id) }")
img.avatar(v-lazy="image.versions[image.versions.length - 1].file.url")
div(style="float:right;margin-top:5px")
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-download" circle)
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-picture-outline" circle)
el-button(type="default" @click="deleteVRCPlusIcon(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
el-tab-pane(v-if="galleryDialogVisible" v-loading="galleryDialogEmojisLoading")
span(slot="label") {{ $t('dialog.gallery_icons.emojis') }}
@@ -134,7 +134,7 @@ mixin currentUser()
span(v-if="image.frames" style="margin-right:5px") {{ image.frames }}frames
br
div(style="float:right;margin-top:5px")
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-download" circle)
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-picture-outline" circle)
el-button(type="default" @click="deleteEmoji(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
el-tab-pane(v-if="galleryDialogVisible" v-loading="galleryDialogStickersLoading")
span(slot="label") {{ $t('dialog.gallery_icons.stickers') }}
@@ -148,5 +148,19 @@ mixin currentUser()
.vrcplus-icon(v-if="image.versions[image.versions.length - 1].file.url" style="overflow:hidden" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)")
img.avatar(v-lazy="image.versions[image.versions.length - 1].file.url")
div(style="float:right;margin-top:5px")
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-download" circle)
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-picture-outline" circle)
el-button(type="default" @click="deleteSticker(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
el-tab-pane(v-if="galleryDialogVisible" v-loading="galleryDialogPrintsLoading")
span(slot="label") {{ $t('dialog.gallery_icons.prints') }}
span(style="color:#909399;font-size:12px;margin-left:5px") {{ printTable.length }}/64
input(type="file" accept="image/png,image/jpg,image/jpeg,image/webp,image/bmp,image/gif" @change="onFileChangePrint" id="PrintUploadButton" style="display:none")
el-button-group
el-button(type="default" size="small" @click="refreshPrintTable" icon="el-icon-refresh") {{ $t('dialog.gallery_icons.refresh') }}
//- el-button(type="default" size="small" @click="displayPrintUpload" icon="el-icon-upload2" :disabled="!API.currentUser.$isVRCPlus") {{ $t('dialog.gallery_icons.upload') }}
br
.x-friend-item(v-if="image.versions && image.versions.length > 0" v-for="image in printTable" :key="image.id" style="display:inline-block;margin-top:10px;width:unset;cursor:default")
.vrcplus-icon(v-if="image.versions[image.versions.length - 1].file.url" style="overflow:hidden" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)")
img.avatar(v-lazy="image.versions[image.versions.length - 1].file.url")
div(style="float:right;margin-top:5px")
el-button(type="default" @click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-picture-outline" circle)
el-button(type="default" @click="deletePrint(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")

View File

@@ -23,13 +23,16 @@ mixin screenshotMetadata()
br
span(v-text="screenshotMetadataDialog.metadata.fileName")
br
template(v-if="screenshotMetadataDialog.metadata.note")
span(v-text="screenshotMetadataDialog.metadata.note")
br
span(v-if="screenshotMetadataDialog.metadata.dateTime" style="margin-right:5px") {{ screenshotMetadataDialog.metadata.dateTime | formatDate('long') }}
span(v-if="screenshotMetadataDialog.metadata.fileResolution" v-text="screenshotMetadataDialog.metadata.fileResolution" style="margin-right:5px")
el-tag(v-if="screenshotMetadataDialog.metadata.fileSize" type="info" effect="plain" size="mini" v-text="screenshotMetadataDialog.metadata.fileSize")
br
location(v-if="screenshotMetadataDialog.metadata.world" :location="screenshotMetadataDialog.metadata.world.instanceId" :hint="screenshotMetadataDialog.metadata.world.name")
br
span.x-link(v-if="screenshotMetadataDialog.metadata.author" v-text="screenshotMetadataDialog.metadata.author.displayName" @click="showUserDialog(screenshotMetadataDialog.metadata.author.id)" style="color:#909399;font-family:monospace")
display-name(v-if="screenshotMetadataDialog.metadata.author" :userid="screenshotMetadataDialog.metadata.author.id" :hind="screenshotMetadataDialog.metadata.author.displayName" style="color:#909399;font-family:monospace")
br
el-carousel(ref="screenshotMetadataCarousel" :interval="0" initial-index="1" indicator-position="none" arrow="always" height="600px" style="margin-top:10px" @change="screenshotMetadataCarouselChange")
el-carousel-item