Fixes and changes

This commit is contained in:
Natsumi
2023-09-25 02:19:09 +13:00
parent ad780071b2
commit 2c1f7dbf13
7 changed files with 126 additions and 67 deletions
+24 -25
View File
@@ -68,8 +68,6 @@ namespace VRCX
foreach (var keyValuePair in monitoredProcesses) foreach (var keyValuePair in monitoredProcesses)
{ {
var monitoredProcess = keyValuePair.Value; var monitoredProcess = keyValuePair.Value;
var process = monitoredProcess.Process;
var name = monitoredProcess.ProcessName;
if (monitoredProcess.IsRunning) if (monitoredProcess.IsRunning)
{ {
@@ -93,11 +91,11 @@ namespace VRCX
foreach (var monitoredProcess in processesNeedingUpdate) foreach (var monitoredProcess in processesNeedingUpdate)
{ {
var process = processes.FirstOrDefault(p => string.Equals(p.ProcessName, monitoredProcess.ProcessName, StringComparison.OrdinalIgnoreCase)); var process = processes.FirstOrDefault(p => string.Equals(p.ProcessName, monitoredProcess.ProcessName, StringComparison.OrdinalIgnoreCase));
if (process != null) if (process == null)
{ continue;
monitoredProcess.ProcessStarted(process);
ProcessStarted?.Invoke(monitoredProcess); monitoredProcess.ProcessStarted(process);
} ProcessStarted?.Invoke(monitoredProcess);
} }
} }
@@ -110,17 +108,14 @@ namespace VRCX
public bool IsProcessRunning(string processName, bool ensureCheck = false) public bool IsProcessRunning(string processName, bool ensureCheck = false)
{ {
processName = processName.ToLower(); processName = processName.ToLower();
if (monitoredProcesses.ContainsKey(processName)) if (!monitoredProcesses.TryGetValue(processName, out var process))
{ return false;
var process = monitoredProcesses[processName];
if (ensureCheck && process.Process == null) if (ensureCheck && process.Process == null)
return Process.GetProcessesByName(processName).FirstOrDefault() != null; return Process.GetProcessesByName(processName).FirstOrDefault() != null;
return process.IsRunning; return process.IsRunning;
}
return false;
} }
/// <summary> /// <summary>
@@ -129,10 +124,11 @@ namespace VRCX
/// <param name="process"></param> /// <param name="process"></param>
public void AddProcess(Process process) public void AddProcess(Process process)
{ {
if (monitoredProcesses.ContainsKey(process.ProcessName.ToLower())) var processName = process.ProcessName.ToLower();
if (monitoredProcesses.ContainsKey(processName))
return; return;
monitoredProcesses.Add(process.ProcessName.ToLower(), new MonitoredProcess(process)); monitoredProcesses.Add(processName, new MonitoredProcess(process));
} }
/// <summary> /// <summary>
@@ -141,10 +137,9 @@ namespace VRCX
/// <param name="processName"></param> /// <param name="processName"></param>
public void AddProcess(string processName) public void AddProcess(string processName)
{ {
if (monitoredProcesses.ContainsKey(processName.ToLower())) processName = processName.ToLower();
{ if (monitoredProcesses.ContainsKey(processName))
return; return;
}
monitoredProcesses.Add(processName, new MonitoredProcess(processName)); monitoredProcesses.Add(processName, new MonitoredProcess(processName));
} }
@@ -155,10 +150,8 @@ namespace VRCX
/// <param name="processName"></param> /// <param name="processName"></param>
public void RemoveProcess(string processName) public void RemoveProcess(string processName)
{ {
if (monitoredProcesses.ContainsKey(processName.ToLower())) processName = processName.ToLower();
{ monitoredProcesses.Remove(processName);
monitoredProcesses.Remove(processName);
}
} }
} }
@@ -169,7 +162,7 @@ namespace VRCX
Process = process; Process = process;
ProcessName = process.ProcessName.ToLower(); ProcessName = process.ProcessName.ToLower();
if (process != null && !WinApi.HasProcessExited(process.Id)) if (!WinApi.HasProcessExited(process.Id))
IsRunning = true; IsRunning = true;
} }
@@ -182,6 +175,7 @@ namespace VRCX
public Process Process { get; private set; } public Process Process { get; private set; }
public string ProcessName { get; private set; } public string ProcessName { get; private set; }
public bool IsRunning { get; private set; } public bool IsRunning { get; private set; }
public DateTime LastExitTime { get; private set; }
public bool HasName(string processName) public bool HasName(string processName)
{ {
@@ -193,10 +187,15 @@ namespace VRCX
IsRunning = false; IsRunning = false;
Process?.Dispose(); Process?.Dispose();
Process = null; Process = null;
LastExitTime = DateTime.Now;
} }
public void ProcessStarted(Process process) public void ProcessStarted(Process process)
{ {
// check last exit time to prevent status flapping
if (LastExitTime != DateTime.MinValue && DateTime.Now - LastExitTime < TimeSpan.FromSeconds(5))
return;
Process = process; Process = process;
ProcessName = process.ProcessName.ToLower(); ProcessName = process.ProcessName.ToLower();
IsRunning = true; IsRunning = true;
+4 -4
View File
@@ -189,13 +189,13 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CefSharp.Common"> <PackageReference Include="CefSharp.Common">
<Version>116.0.150</Version> <Version>116.0.230</Version>
</PackageReference> </PackageReference>
<PackageReference Include="CefSharp.OffScreen"> <PackageReference Include="CefSharp.OffScreen">
<Version>116.0.150</Version> <Version>116.0.230</Version>
</PackageReference> </PackageReference>
<PackageReference Include="CefSharp.WinForms"> <PackageReference Include="CefSharp.WinForms">
<Version>116.0.150</Version> <Version>116.0.230</Version>
</PackageReference> </PackageReference>
<PackageReference Include="DiscordRichPresence"> <PackageReference Include="DiscordRichPresence">
<Version>1.2.1.24</Version> <Version>1.2.1.24</Version>
@@ -207,7 +207,7 @@
<Version>13.0.3</Version> <Version>13.0.3</Version>
</PackageReference> </PackageReference>
<PackageReference Include="NLog"> <PackageReference Include="NLog">
<Version>5.2.3</Version> <Version>5.2.4</Version>
</PackageReference> </PackageReference>
<PackageReference Include="SharpDX.D3DCompiler"> <PackageReference Include="SharpDX.D3DCompiler">
<Version>4.2.0</Version> <Version>4.2.0</Version>
+3 -3
View File
@@ -703,9 +703,9 @@ namespace VRCX
public void Stop() public void Stop()
{ {
listener.Stop(); listener?.Stop();
listener.Close(); listener?.Close();
worldDB.Close(); worldDB?.Close();
} }
} }
} }
+38 -4
View File
@@ -4899,6 +4899,25 @@ speechSynthesis.getVoices();
$app.instanceQueueReady(instanceId); $app.instanceQueueReady(instanceId);
break; break;
case 'content-refresh':
var contentType = content.contentType;
if (contentType === 'icon') {
if ($app.galleryDialogVisible) {
$app.refreshVRCPlusIconsTable();
}
} else if (contentType === 'gallery') {
if ($app.galleryDialogVisible) {
$app.refreshGalleryTable();
}
} else if (contentType === 'emoji') {
if ($app.galleryDialogVisible) {
$app.refreshEmojiTable();
}
} else {
console.log('Unknown content-refresh', content);
}
break;
default: default:
console.log('Unknown pipeline type', args.json); console.log('Unknown pipeline type', args.json);
} }
@@ -15311,6 +15330,7 @@ speechSynthesis.getVoices();
return true; return true;
} else if (/^[A-Za-z0-9]{3,6}\.[0-9]{4}$/g.test(input)) { } else if (/^[A-Za-z0-9]{3,6}\.[0-9]{4}$/g.test(input)) {
this.showGroupDialogShortCode(input); this.showGroupDialogShortCode(input);
return true;
} else if ( } else if (
input.substring(0, 4) === 'usr_' || input.substring(0, 4) === 'usr_' ||
/^[A-Za-z0-9]{10}$/g.test(input) /^[A-Za-z0-9]{10}$/g.test(input)
@@ -17268,8 +17288,6 @@ speechSynthesis.getVoices();
this.showPreviousInstancesUserDialog(D.ref); this.showPreviousInstancesUserDialog(D.ref);
} else if (command === 'Manage Gallery') { } else if (command === 'Manage Gallery') {
this.showGalleryDialog(); this.showGalleryDialog();
} else if (command === 'Copy User') {
this.copyUser(D.id);
} else if (command === 'Invite To Group') { } else if (command === 'Invite To Group') {
this.showInviteGroupDialog('', D.id); this.showInviteGroupDialog('', D.id);
} else if (command === 'Hide Avatar') { } else if (command === 'Hide Avatar') {
@@ -19531,7 +19549,15 @@ speechSynthesis.getVoices();
this.copyToClipboard(worldName); this.copyToClipboard(worldName);
}; };
$app.methods.copyUser = function (userId) { $app.methods.copyUserId = function (userId) {
this.$message({
message: 'User ID copied to clipboard',
type: 'success'
});
this.copyToClipboard(userId);
};
$app.methods.copyUserURL = function (userId) {
this.$message({ this.$message({
message: 'User URL copied to clipboard', message: 'User URL copied to clipboard',
type: 'success' type: 'success'
@@ -19539,6 +19565,14 @@ speechSynthesis.getVoices();
this.copyToClipboard(`https://vrchat.com/home/user/${userId}`); this.copyToClipboard(`https://vrchat.com/home/user/${userId}`);
}; };
$app.methods.copyUserDisplayName = function (displayName) {
this.$message({
message: 'User DisplayName copied to clipboard',
type: 'success'
});
this.copyToClipboard(displayName);
};
$app.methods.copyGroupId = function (groupId) { $app.methods.copyGroupId = function (groupId) {
this.$message({ this.$message({
message: 'Group ID copied to clipboard', message: 'Group ID copied to clipboard',
@@ -22728,7 +22762,7 @@ speechSynthesis.getVoices();
return; return;
} }
// wait a bit for SteamVR to potentially close before deciding to relaunch // wait a bit for SteamVR to potentially close before deciding to relaunch
var restartDelay = 5000; var restartDelay = 8000;
if (this.isGameNoVR) { if (this.isGameNoVR) {
// wait for game to close before relaunching // wait for game to close before relaunching
restartDelay = 2000; restartDelay = 2000;
+12 -2
View File
@@ -270,7 +270,6 @@ html
el-button(:type="(userDialog.incomingRequest || userDialog.outgoingRequest) ? 'success' : (userDialog.isBlock || userDialog.isMute) ? 'danger' : 'default'" icon="el-icon-more" circle style="margin-left:5px") el-button(:type="(userDialog.incomingRequest || userDialog.outgoingRequest) ? 'success' : (userDialog.isBlock || userDialog.isMute) ? 'danger' : 'default'" icon="el-icon-more" circle style="margin-left:5px")
el-dropdown-menu(#default="dropdown") el-dropdown-menu(#default="dropdown")
el-dropdown-item(icon="el-icon-refresh" command="Refresh") {{ $t('dialog.user.actions.refresh') }} el-dropdown-item(icon="el-icon-refresh" command="Refresh") {{ $t('dialog.user.actions.refresh') }}
el-dropdown-item(icon="el-icon-s-order" command="Copy User") {{ $t('dialog.user.actions.copy_url') }}
template(v-if="userDialog.ref.id === API.currentUser.id") template(v-if="userDialog.ref.id === API.currentUser.id")
el-dropdown-item(icon="el-icon-picture-outline" command="Manage Gallery" divided) {{ $t('dialog.user.actions.manage_gallery_icon') }} el-dropdown-item(icon="el-icon-picture-outline" command="Manage Gallery" divided) {{ $t('dialog.user.actions.manage_gallery_icon') }}
el-dropdown-item(icon="el-icon-s-custom" command="Show Avatar Author") {{ $t('dialog.user.actions.show_avatar_author') }} el-dropdown-item(icon="el-icon-s-custom" command="Show Avatar Author") {{ $t('dialog.user.actions.show_avatar_author') }}
@@ -366,7 +365,7 @@ html
.x-friend-item(style="width:100%;cursor:default") .x-friend-item(style="width:100%;cursor:default")
.detail .detail
span.name {{ $t('dialog.user.info.represented_group') }} span.name {{ $t('dialog.user.info.represented_group') }}
.extra(v-if="userDialog.representedGroup.isRepresenting") .extra(v-if="userDialog.representedGroup?.isRepresenting")
div(style="display:inline-block;flex:none;margin-right:5px") div(style="display:inline-block;flex:none;margin-right:5px")
el-popover(placement="right" width="500px" trigger="click") el-popover(placement="right" width="500px" trigger="click")
img.x-link(slot="reference" v-lazy="userDialog.representedGroup.iconUrl" style="flex:none;width:60px;height:60px;border-radius:4px;object-fit:cover") img.x-link(slot="reference" v-lazy="userDialog.representedGroup.iconUrl" style="flex:none;width:60px;height:60px;border-radius:4px;object-fit:cover")
@@ -458,6 +457,17 @@ html
span.extra span.extra
span(v-text="userDialog.$homeLocationName") span(v-text="userDialog.$homeLocationName")
el-button(@click.stop="resetHome()" size="mini" icon="el-icon-delete" circle style="margin-left:5px") el-button(@click.stop="resetHome()" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
.x-friend-item(style="width:100%;cursor:default")
.detail
span.name {{ $t('dialog.user.info.id') }}
span.extra {{ userDialog.id }}
el-tooltip(placement="top" :content="$t('dialog.user.info.id_tooltip')" :disabled="hideTooltips")
el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px")
el-button(type="default" icon="el-icon-s-order" size="mini" circle)
el-dropdown-menu(#default="dropdown")
el-dropdown-item(@click.native="copyUserId(userDialog.id)") {{ $t('dialog.user.info.copy_id') }}
el-dropdown-item(@click.native="copyUserURL(userDialog.id)") {{ $t('dialog.user.info.copy_url') }}
el-dropdown-item(@click.native="copyUserDisplayName(userDialog.ref.displayName)") {{ $t('dialog.user.info.copy_display_name') }}
el-tab-pane(:label="$t('dialog.user.groups.header')") el-tab-pane(:label="$t('dialog.user.groups.header')")
el-button(type="default" :loading="userDialog.isGroupsLoading" @click="getUserGroups(userDialog.id)" size="mini" icon="el-icon-refresh" circle) el-button(type="default" :loading="userDialog.isGroupsLoading" @click="getUserGroups(userDialog.id)" size="mini" icon="el-icon-refresh" circle)
span(style="margin-left:5px") {{ $t('dialog.user.groups.total_count', { count: userGroups.groups.length }) }} span(style="margin-left:5px") {{ $t('dialog.user.groups.total_count', { count: userGroups.groups.length }) }}
+6 -1
View File
@@ -104,6 +104,7 @@
"clear_tooltip": "Clear", "clear_tooltip": "Clear",
"delete_tooltip": "Delete", "delete_tooltip": "Delete",
"unavailable_tooltip": "Unavailable", "unavailable_tooltip": "Unavailable",
"private": "Private",
"sort_by": "Sort By" "sort_by": "Sort By"
}, },
"friend_log": { "friend_log": {
@@ -528,7 +529,6 @@
"favorite_tooltip": "Add to favorites", "favorite_tooltip": "Add to favorites",
"unfavorite_tooltip": "Remove from favorites", "unfavorite_tooltip": "Remove from favorites",
"refresh": "Refresh", "refresh": "Refresh",
"copy_url": "Copy User URL",
"invite": "Invite", "invite": "Invite",
"invite_with_message": "Invite With Message", "invite_with_message": "Invite With Message",
"request_invite": "Request Invite", "request_invite": "Request Invite",
@@ -590,6 +590,11 @@
"avatar_cloning_allow": "Allowed", "avatar_cloning_allow": "Allowed",
"avatar_cloning_deny": "Deny", "avatar_cloning_deny": "Deny",
"home_location": "Home Location", "home_location": "Home Location",
"id": "User ID",
"id_tooltip": "Copy to clipboard",
"copy_id": "Copy ID",
"copy_url": "Copy URL",
"copy_display_name": "Copy DisplayName",
"accuracy_notice": "Info from local database may not be accurate", "accuracy_notice": "Info from local database may not be accurate",
"instance_full": "full" "instance_full": "full"
}, },
+39 -28
View File
@@ -47,7 +47,9 @@ mixin favoritesTab()
el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips") el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips")
el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px") el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
template(v-else) template(v-else)
span(v-text="favorite.name || favorite.id") .avatar
.detail
span(v-text="favorite.name || favorite.id")
el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px") el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px")
el-tab-pane(:label="$t('view.favorite.worlds.header')") el-tab-pane(:label="$t('view.favorite.worlds.header')")
el-collapse(v-if="$refs.menu && $refs.menu.activeIndex === 'favorite' && $refs.favoriteTabRef && $refs.favoriteTabRef.currentName === '1'" style="border:0") el-collapse(v-if="$refs.menu && $refs.menu.activeIndex === 'favorite' && $refs.favoriteTabRef && $refs.favoriteTabRef.currentName === '1'" style="border:0")
@@ -75,30 +77,34 @@ mixin favoritesTab()
div(style="display:inline-block;width:300px;margin-right:15px" v-for="favorite in favoriteWorlds" v-if="favorite.groupKey === group.key" :key="favorite.id" @click="showWorldDialog(favorite.id)") div(style="display:inline-block;width:300px;margin-right:15px" v-for="favorite in favoriteWorlds" v-if="favorite.groupKey === group.key" :key="favorite.id" @click="showWorldDialog(favorite.id)")
.x-friend-item .x-friend-item
template(v-if="favorite.ref") template(v-if="favorite.ref")
.avatar .avatar
img(v-lazy="favorite.ref.thumbnailImageUrl") img(v-lazy="favorite.ref.thumbnailImageUrl")
.detail .detail
span.name(v-text="favorite.ref.name") span.name(v-text="favorite.ref.name")
span.extra(v-if="favorite.ref.occupants") {{ favorite.ref.authorName }} ({{ favorite.ref.occupants }}) span.extra(v-if="favorite.ref.occupants") {{ favorite.ref.authorName }} ({{ favorite.ref.occupants }})
span.extra(v-else v-text="favorite.ref.authorName") span.extra(v-else v-text="favorite.ref.authorName")
template(v-if="bulkUnfavoriteMode") template(v-if="bulkUnfavoriteMode")
el-button(type="text" size="mini" @click.stop style="margin-left:5px") el-button(type="text" size="mini" @click.stop style="margin-left:5px")
el-checkbox(v-model="favorite.$selected") el-checkbox(v-model="favorite.$selected")
template(v-else-if="favorite.ref") template(v-else-if="favorite.ref")
el-tooltip(v-if="favorite.deleted" placement="left" :content="$t('view.favorite.unavailable_tooltip')")
i.el-icon-warning(style="color:#f56c6c;margin-left:5px")
el-tooltip(placement="left" :content="$t('view.favorite.move_tooltip')" :disabled="hideTooltips")
el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px")
el-button(type="default" icon="el-icon-back" size="mini" circle)
el-dropdown-menu(#default="dropdown")
template(v-if="groupAPI.name !== group.name" v-for="groupAPI in API.favoriteWorldGroups" :key="groupAPI.name")
el-dropdown-item(style="display:block;margin:10px 0" @click.native="moveFavorite(favorite.ref, groupAPI, 'world')" :disabled="groupAPI.count >= groupAPI.capacity") {{ groupAPI.displayName }} ({{ groupAPI.count }} / {{ groupAPI.capacity }})
el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips")
el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
template(v-else)
span(v-text="favorite.name || favorite.id")
el-tooltip(v-if="favorite.deleted" placement="left" :content="$t('view.favorite.unavailable_tooltip')") el-tooltip(v-if="favorite.deleted" placement="left" :content="$t('view.favorite.unavailable_tooltip')")
i.el-icon-warning(style="color:#f56c6c;margin-left:5px") i.el-icon-warning(style="color:#f56c6c;margin-left:5px")
el-tooltip(v-if="favorite.ref.releaseStatus === 'private'" placement="left" :content="$t('view.favorite.private')")
i.el-icon-warning(style="color:#e6a23c;margin-left:5px")
el-tooltip(placement="left" :content="$t('view.favorite.move_tooltip')" :disabled="hideTooltips")
el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px")
el-button(type="default" icon="el-icon-back" size="mini" circle)
el-dropdown-menu(#default="dropdown")
template(v-if="groupAPI.name !== group.name" v-for="groupAPI in API.favoriteWorldGroups" :key="groupAPI.name")
el-dropdown-item(style="display:block;margin:10px 0" @click.native="moveFavorite(favorite.ref, groupAPI, 'world')" :disabled="groupAPI.count >= groupAPI.capacity") {{ groupAPI.displayName }} ({{ groupAPI.count }} / {{ groupAPI.capacity }})
el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips")
el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
template(v-else)
.avatar
.detail
span(v-text="favorite.name || favorite.id")
el-tooltip(v-if="favorite.deleted" placement="left" :content="$t('view.favorite.unavailable_tooltip')")
i.el-icon-warning(style="color:#f56c6c;margin-left:5px")
el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px") el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px")
span(style="display:block;margin-top:20px") {{ $t('view.favorite.worlds.local_favorites') }} span(style="display:block;margin-top:20px") {{ $t('view.favorite.worlds.local_favorites') }}
el-button(size="small" @click="promptNewLocalWorldFavoriteGroup" style="display:block;margin-top:10px") {{ $t('view.favorite.worlds.new_group') }} el-button(size="small" @click="promptNewLocalWorldFavoriteGroup" style="display:block;margin-top:10px") {{ $t('view.favorite.worlds.new_group') }}
@@ -114,16 +120,18 @@ mixin favoritesTab()
div(style="display:inline-block;width:300px;margin-right:15px" v-for="favorite in localWorldFavorites[group]" :key="favorite.id" @click="showWorldDialog(favorite.id)") div(style="display:inline-block;width:300px;margin-right:15px" v-for="favorite in localWorldFavorites[group]" :key="favorite.id" @click="showWorldDialog(favorite.id)")
.x-friend-item .x-friend-item
template(v-if="favorite.name") template(v-if="favorite.name")
.avatar .avatar
img(v-lazy="favorite.thumbnailImageUrl") img(v-lazy="favorite.thumbnailImageUrl")
.detail .detail
span.name(v-text="favorite.name") span.name(v-text="favorite.name")
span.extra(v-if="favorite.occupants") {{ favorite.authorName }} ({{ favorite.occupants }}) span.extra(v-if="favorite.occupants") {{ favorite.authorName }} ({{ favorite.occupants }})
span.extra(v-else v-text="favorite.authorName") span.extra(v-else v-text="favorite.authorName")
el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips") el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips")
el-button(@click.stop="removeLocalWorldFavorite(favorite.id, group)" size="mini" icon="el-icon-delete" circle style="margin-left:5px") el-button(@click.stop="removeLocalWorldFavorite(favorite.id, group)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
template(v-else) template(v-else)
span(v-text="favorite.id") .avatar
.detail
span(v-text="favorite.id")
el-button(type="text" icon="el-icon-close" size="mini" @click.stop="removeLocalWorldFavorite(favorite.id, group)" style="margin-left:5px") el-button(type="text" icon="el-icon-close" size="mini" @click.stop="removeLocalWorldFavorite(favorite.id, group)" style="margin-left:5px")
el-tab-pane(:label="$t('view.favorite.avatars.header')") el-tab-pane(:label="$t('view.favorite.avatars.header')")
el-collapse(v-if="$refs.menu && $refs.menu.activeIndex === 'favorite' && $refs.favoriteTabRef && $refs.favoriteTabRef.currentName === '2'" style="border:0") el-collapse(v-if="$refs.menu && $refs.menu.activeIndex === 'favorite' && $refs.favoriteTabRef && $refs.favoriteTabRef.currentName === '2'" style="border:0")
@@ -155,6 +163,8 @@ mixin favoritesTab()
template(v-else-if="favorite.ref") template(v-else-if="favorite.ref")
el-tooltip(v-if="favorite.deleted" placement="left" :content="$t('view.favorite.unavailable_tooltip')") el-tooltip(v-if="favorite.deleted" placement="left" :content="$t('view.favorite.unavailable_tooltip')")
i.el-icon-warning(style="color:#f56c6c;margin-left:5px") i.el-icon-warning(style="color:#f56c6c;margin-left:5px")
el-tooltip(v-if="favorite.ref.releaseStatus === 'private'" placement="left" :content="$t('view.favorite.private')")
i.el-icon-warning(style="color:#e6a23c;margin-left:5px")
el-tooltip(placement="left" :content="$t('view.favorite.move_tooltip')" :disabled="hideTooltips") el-tooltip(placement="left" :content="$t('view.favorite.move_tooltip')" :disabled="hideTooltips")
el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px") el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px")
el-button(type="default" icon="el-icon-back" size="mini" circle) el-button(type="default" icon="el-icon-back" size="mini" circle)
@@ -164,6 +174,7 @@ mixin favoritesTab()
el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips") el-tooltip(placement="right" :content="$t('view.favorite.unfavorite_tooltip')" :disabled="hideTooltips")
el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px") el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
template(v-else) template(v-else)
.avatar
.detail .detail
span.name(v-text="favorite.name || favorite.id") span.name(v-text="favorite.name || favorite.id")
el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px") el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px")