Debug logging message, custom script

This commit is contained in:
Natsumi
2022-12-13 19:11:25 +13:00
parent f865d5086d
commit 2fd992edf7
4 changed files with 58 additions and 10 deletions

View File

@@ -373,6 +373,15 @@ namespace VRCX
return output; return output;
} }
public string CustomScriptPath()
{
var output = String.Empty;
var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "VRCX\\custom.js");
if (File.Exists(filePath))
output = filePath;
return output;
}
public string CurrentCulture() public string CurrentCulture()
{ {
return System.Globalization.CultureInfo.CurrentCulture.ToString(); return System.Globalization.CultureInfo.CurrentCulture.ToString();

View File

@@ -37,6 +37,7 @@ namespace VRCX
private Thread m_Thread; private Thread m_Thread;
private bool m_ResetLog; private bool m_ResetLog;
private bool m_FirstRun = true; private bool m_FirstRun = true;
private bool m_NullLogMsg;
private static DateTime tillDate = DateTime.Now; private static DateTime tillDate = DateTime.Now;
// NOTE // NOTE
@@ -94,7 +95,7 @@ namespace VRCX
{ {
Thread.Sleep(1000); Thread.Sleep(1000);
} }
catch(ThreadInterruptedException) catch (ThreadInterruptedException)
{ {
} }
} }
@@ -128,8 +129,10 @@ namespace VRCX
// sort by creation time // sort by creation time
Array.Sort(fileInfos, (a, b) => a.CreationTimeUtc.CompareTo(b.CreationTimeUtc)); Array.Sort(fileInfos, (a, b) => a.CreationTimeUtc.CompareTo(b.CreationTimeUtc));
var index = 0;
foreach (var fileInfo in fileInfos) foreach (var fileInfo in fileInfos)
{ {
index++;
fileInfo.Refresh(); fileInfo.Refresh();
if (fileInfo.Exists == false) if (fileInfo.Exists == false)
{ {
@@ -151,6 +154,17 @@ namespace VRCX
m_LogContextMap.Add(fileInfo.Name, logContext); m_LogContextMap.Add(fileInfo.Name, logContext);
} }
if (!m_NullLogMsg && fileInfo.Length == 0 && index == fileInfos.Length)
{
// check if last file is empty
Console.WriteLine($"{fileInfo.Name}");
if (MainForm.Instance != null && MainForm.Instance.Browser != null)
{
MainForm.Instance.Browser.ExecuteScriptAsync("$app.showNullLogWarning()");
m_NullLogMsg = true;
}
}
if (logContext.Length == fileInfo.Length) if (logContext.Length == fileInfo.Length)
{ {
continue; continue;

View File

@@ -4621,6 +4621,7 @@ speechSynthesis.getVoices();
this.updateLoop(); this.updateLoop();
this.getGameLogTable(); this.getGameLogTable();
this.refreshCustomCss(); this.refreshCustomCss();
this.refreshCustomScript();
this.$nextTick(function () { this.$nextTick(function () {
this.$el.style.display = ''; this.$el.style.display = '';
if (!this.enablePrimaryPassword) { if (!this.enablePrimaryPassword) {
@@ -4659,6 +4660,21 @@ speechSynthesis.getVoices();
}); });
}; };
$app.methods.refreshCustomScript = function () {
if (document.contains(document.getElementById('app-custom-script'))) {
document.getElementById('app-custom-script').remove();
}
AppApi.CustomScriptPath().then((customScript) => {
var head = document.head;
if (customScript) {
var $appCustomScript = document.createElement('script');
$appCustomScript.setAttribute('id', 'app-custom-script');
$appCustomScript.src = `file://${customScript}?_=${Date.now()}`;
head.appendChild($appCustomScript);
}
});
};
$app.methods.openExternalLink = function (link) { $app.methods.openExternalLink = function (link) {
this.$confirm(`${link}`, 'Open External Link', { this.$confirm(`${link}`, 'Open External Link', {
confirmButtonText: 'Confirm', confirmButtonText: 'Confirm',
@@ -6334,7 +6350,7 @@ speechSynthesis.getVoices();
callback: (action, instance) => { callback: (action, instance) => {
if (action === 'confirm') { if (action === 'confirm') {
API.verifyTOTP({ API.verifyTOTP({
code: instance.inputValue code: instance.inputValue.trim()
}) })
.catch((err) => { .catch((err) => {
this.promptTOTP(); this.promptTOTP();
@@ -6366,7 +6382,7 @@ speechSynthesis.getVoices();
callback: (action, instance) => { callback: (action, instance) => {
if (action === 'confirm') { if (action === 'confirm') {
API.verifyOTP({ API.verifyOTP({
code: instance.inputValue code: instance.inputValue.trim()
}) })
.catch((err) => { .catch((err) => {
this.promptOTP(); this.promptOTP();
@@ -6398,7 +6414,7 @@ speechSynthesis.getVoices();
callback: (action, instance) => { callback: (action, instance) => {
if (action === 'confirm') { if (action === 'confirm') {
API.verifyEmailOTP({ API.verifyEmailOTP({
code: instance.inputValue code: instance.inputValue.trim()
}) })
.catch((err) => { .catch((err) => {
this.promptEmailOTP(); this.promptEmailOTP();
@@ -20336,7 +20352,11 @@ speechSynthesis.getVoices();
$app.methods.checkCanInvite = function (location) { $app.methods.checkCanInvite = function (location) {
var L = API.parseLocation(location); var L = API.parseLocation(location);
if (L.accessType === 'public' || L.userId === API.currentUser.id) { if (
L.accessType === 'public' ||
L.accessType === 'group' ||
L.userId === API.currentUser.id
) {
return true; return true;
} }
if (L.accessType === 'invite') { if (L.accessType === 'invite') {
@@ -22889,7 +22909,7 @@ speechSynthesis.getVoices();
}); });
if ($app.groupDialog.visible && $app.groupDialog.id === groupId) { if ($app.groupDialog.visible && $app.groupDialog.id === groupId) {
$app.groupDialog.inGroup = json.membershipStatus === 'member'; $app.groupDialog.inGroup = json.membershipStatus === 'member';
this.getGroupDialogGroup(groupId); $app.getGroupDialogGroup(groupId);
} }
}); });
@@ -22915,7 +22935,7 @@ speechSynthesis.getVoices();
var groupId = args.params.groupId; var groupId = args.params.groupId;
if ($app.groupDialog.visible && $app.groupDialog.id === groupId) { if ($app.groupDialog.visible && $app.groupDialog.id === groupId) {
$app.groupDialog.inGroup = false; $app.groupDialog.inGroup = false;
this.getGroupDialogGroup(groupId); $app.getGroupDialogGroup(groupId);
} }
if ( if (
$app.userDialog.visible && $app.userDialog.visible &&
@@ -23780,6 +23800,13 @@ speechSynthesis.getVoices();
} }
}; };
$app.methods.showNullLogWarning = function () {
this.$alert(
'VRCX noticed your last log file is empty this is normally caused by disabling debug logging. VRCX requires debug logging to be enabled to function correctly. Please enable debug logging in VRChat quick menu settings > debug > enable debug logging, then rejoin the instance or restart VRChat.',
'Enable debug logging'
);
};
$app = new Vue($app); $app = new Vue($app);
window.$app = $app; window.$app = $app;
})(); })();

View File

@@ -2242,17 +2242,15 @@ html
el-button(type="default" icon="el-icon-more" circle) el-button(type="default" icon="el-icon-more" circle)
el-dropdown-menu(#default="dropdown") el-dropdown-menu(#default="dropdown")
el-dropdown-item(icon="el-icon-refresh" command="Refresh") Refresh el-dropdown-item(icon="el-icon-refresh" command="Refresh") Refresh
template(v-if="groupDialog.inGroup") template(v-if="groupDialog.inGroup")
template(v-if="groupDialog.ref.myMember") template(v-if="groupDialog.ref.myMember")
el-dropdown-item(v-if="groupDialog.ref.myMember.isSubscribedToAnnouncements" icon="el-icon-close" command="Unsubscribe To Announcements" divided) Unsubscribe To Announcements el-dropdown-item(v-if="groupDialog.ref.myMember.isSubscribedToAnnouncements" icon="el-icon-close" command="Unsubscribe To Announcements" divided) Unsubscribe To Announcements
el-dropdown-item(v-else icon="el-icon-check" command="Subscribe To Announcements" divided) Subscribe To Announcements el-dropdown-item(v-else icon="el-icon-check" command="Subscribe To Announcements" divided) Subscribe To Announcements
el-dropdown-item(icon="el-icon-message" command="Invite To Group") Invite To Group el-dropdown-item(v-if="hasGroupPermission(groupDialog.ref, 'group-invites-manage')" icon="el-icon-message" command="Invite To Group") Invite To Group
template(v-if="groupDialog.ref.myMember && groupDialog.ref.privacy === 'default'") template(v-if="groupDialog.ref.myMember && groupDialog.ref.privacy === 'default'")
el-dropdown-item(icon="el-icon-view" command="Visibility Everyone" divided) #[i.el-icon-check(v-if="groupDialog.ref.myMember.visibility === 'visible'")] Visibility Everyone el-dropdown-item(icon="el-icon-view" command="Visibility Everyone" divided) #[i.el-icon-check(v-if="groupDialog.ref.myMember.visibility === 'visible'")] Visibility Everyone
el-dropdown-item(icon="el-icon-view" command="Visibility Friends") #[i.el-icon-check(v-if="groupDialog.ref.myMember.visibility === 'friends'")] Visibility Friends el-dropdown-item(icon="el-icon-view" command="Visibility Friends") #[i.el-icon-check(v-if="groupDialog.ref.myMember.visibility === 'friends'")] Visibility Friends
el-dropdown-item(icon="el-icon-view" command="Visibility Hidden") #[i.el-icon-check(v-if="groupDialog.ref.myMember.visibility === 'hidden'")] Visibility Hidden el-dropdown-item(icon="el-icon-view" command="Visibility Hidden") #[i.el-icon-check(v-if="groupDialog.ref.myMember.visibility === 'hidden'")] Visibility Hidden
el-dropdown-item(icon="el-icon-delete" command="Leave Group" style="color:#F56C6C" divided) Leave Group el-dropdown-item(icon="el-icon-delete" command="Leave Group" style="color:#F56C6C" divided) Leave Group
el-tabs(ref="groupDialogTabs" @tab-click="groupDialogTabClick") el-tabs(ref="groupDialogTabs" @tab-click="groupDialogTabClick")
el-tab-pane(label="Info") el-tab-pane(label="Info")