コード例 #1
0
        public static Task <string> GiConfirmAction(string action, bool value)
        {
            Globals.DebugWriteLine($@"[JSInvoke:General\GeneralInvocableFuncs.GiConfirmAction] action={action.Split(":")[0]}, value={value}");
            if (!value)
            {
                return(Task.FromResult(""));
            }

            var split = action.Split(":");

            if (split.Length > 1)
            {
                var accName = split[1];

                if (action.StartsWith("AcceptForgetBasicAcc:"))
                {
                    BasicSettings.SetForgetAcc(true);
                    _ = GeneralFuncs.ForgetAccount_Generic(accName, CurrentPlatform.SafeName, true);
                    return(Task.FromResult("refresh"));
                }

                if (action.StartsWith("AcceptForgetSteamAcc:"))
                {
                    SteamSettings.SetForgetAcc(true);
                    _ = SteamSwitcherFuncs.ForgetAccount(accName);
                    return(Task.FromResult("refresh"));
                }

                if (action.StartsWith("AcceptForgetBattleNetAcc:"))
                {
                    BattleNetSettings.SetForgetAcc(true);
                    BattleNetSwitcherFuncs.ForgetAccount(accName);
                    return(Task.FromResult("refresh"));
                }
            }
            switch (action)
            {
            case "ClearBattleNetIgnored":
                BattleNetSwitcherFuncs.ClearIgnored_Confirmed();
                break;

            case "RestartAsAdmin":
                break;
            }

            return(Task.FromResult(""));
        }
コード例 #2
0
        public void Check(string platform)
        {
            Globals.DebugWriteLine($@"[Func:Index.Check] platform={platform}");
            switch (platform)
            {
            case "BattleNet":
                if (!GeneralFuncs.CanKillProcess(BattleNetSettings.Processes, BattleNetSettings.ClosingMethod))
                {
                    return;
                }
                if (Directory.Exists(BattleNetSettings.FolderPath) && File.Exists(BattleNetSettings.Exe()))
                {
                    AppData.ActiveNavMan.NavigateTo("/BattleNet/");
                }
                else
                {
                    _ = GeneralInvocableFuncs.ShowModal("find:BattleNet:Battle.net.exe:BattleNetSettings");
                }
                break;

            case "Steam":
                if (!GeneralFuncs.CanKillProcess(SteamSettings.Processes, SteamSettings.ClosingMethod))
                {
                    return;
                }
                if (!Directory.Exists(SteamSettings.FolderPath) || !File.Exists(SteamSettings.Exe()))
                {
                    _ = GeneralInvocableFuncs.ShowModal("find:Steam:Steam.exe:SteamSettings");
                    return;
                }
                if (SteamSwitcherFuncs.SteamSettingsValid())
                {
                    AppData.ActiveNavMan.NavigateTo("/Steam/");
                }
                else
                {
                    _ = GeneralInvocableFuncs.ShowModal(Lang["Toast_Steam_CantLocateLoginusers"]);
                }
                break;

            default:
                if (BasicPlatforms.PlatformExistsFromShort(platform))     // Is a basic platform!
                {
                    BasicPlatforms.SetCurrentPlatformFromShort(platform);
                    if (!GeneralFuncs.CanKillProcess(CurrentPlatform.ExesToEnd, BasicSettings.ClosingMethod))
                    {
                        return;
                    }

                    if (Directory.Exists(BasicSettings.FolderPath) && File.Exists(BasicSettings.Exe()))
                    {
                        AppData.ActiveNavMan.NavigateTo("/Basic/");
                    }
                    else
                    {
                        _ = GeneralInvocableFuncs.ShowModal($"find:{CurrentPlatform.SafeName}:{CurrentPlatform.ExeName}:{CurrentPlatform.SafeName}");
                    }
                }
                break;
            }
        }
コード例 #3
0
        public static async Task <string> GiExportAccountList(string platform)
        {
            Globals.DebugWriteLine(@$ "[Func:Pages\General\GeneralInvocableFuncs.GiExportAccountList] platform={platform}");
            platform = BasicPlatforms.PlatformFullName(platform);
            if (!Directory.Exists(Path.Join("LoginCache", platform)))
            {
                _ = ShowToast("error", Lang["Toast_AddAccountsFirst"], Lang["Toast_AddAccountsFirstTitle"], "toastarea");
                return("");
            }

            var s = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator; // Different regions use different separators in csv files.

            List <string> allAccountsTable = new();

            if (platform == "Steam")
            {
                // Add headings and separator for programs like Excel
                allAccountsTable.Add("SEP=,");
                allAccountsTable.Add("Account name:,Community name:,SteamID:,VAC status:,Last login:,Saved profile image:");

                var userAccounts   = SteamSwitcherFuncs.GetSteamUsers(SteamSettings.LoginUsersVdf());
                var vacStatusList  = new List <SteamSwitcherFuncs.VacStatus>();
                var loadedVacCache = SteamSwitcherFuncs.LoadVacInfo(ref vacStatusList);

                foreach (var ua in userAccounts)
                {
                    var vacInfo = "";
                    // Get VAC/Limited info
                    if (loadedVacCache)
                    {
                        foreach (var vsi in vacStatusList.Where(vsi => vsi.SteamId == ua.SteamId))
                        {
                            if (vsi.Vac && vsi.Ltd)
                            {
                                vacInfo += "VAC + Limited";
                            }
                            else
                            {
                                vacInfo += (vsi.Vac ? "VAC" : "") + (vsi.Ltd ? "Limited" : "");
                            }
                            break;
                        }
                    }
                    else
                    {
                        vacInfo += "N/A";
                    }

                    var imagePath = Path.GetFullPath($"{SteamSettings.SteamImagePath + ua.SteamId}.jpg");
                    allAccountsTable.Add(ua.AccName + s +
                                         ua.Name + s +
                                         ua.SteamId + s +
                                         vacInfo + s +
                                         SteamSwitcherFuncs.UnixTimeStampToDateTime(ua.LastLogin) + s +
                                         (File.Exists(imagePath) ? imagePath : "Missing from disk"));
                }
            }
            else if (platform == "BattleNet")
            {
                // Add headings and separator for programs like Excel
                allAccountsTable.Add("SEP=,");
                allAccountsTable.Add("Email:,BattleTag:,Overwatch Support SR:,Overwatch DPS SR:,Overwatch Tank SR:,Saved profile image:");

                await BattleNetSwitcherFuncs.LoadProfiles();

                foreach (var ba in BattleNetSettings.Accounts)
                {
                    var imagePath = Path.GetFullPath($"wwwroot\\img\\profiles\\battlenet\\{ba.Email}.png");
                    allAccountsTable.Add(ba.Email + s +
                                         ba.BTag + s +
                                         (ba.OwSupportSr != 0 ? ba.OwSupportSr : "") + s +
                                         (ba.OwDpsSr != 0 ? ba.OwDpsSr : "") + s +
                                         (ba.OwTankSr != 0 ? ba.OwTankSr : "") + s +
                                         (File.Exists(imagePath) ? imagePath : "Missing from disk"));
                }
            }
            else
            {
                // Platform does not have specific details other than usernames saved.
                allAccountsTable.Add("Account name:");
                foreach (var accDirectory in Directory.GetDirectories(Path.Join("LoginCache", platform)))
                {
                    allAccountsTable.Add(Path.GetFileName(accDirectory));
                }
            }

            var outputFolder = Path.Join("wwwroot", "Exported");

            _ = Directory.CreateDirectory(outputFolder);

            var outputFile = Path.Join(outputFolder, platform + ".csv");
            await File.WriteAllLinesAsync(outputFile, allAccountsTable).ConfigureAwait(false);

            return(Path.Join("Exported", platform + ".csv"));
        }
コード例 #4
0
        public static void CreateShortcut(string page, string accId, string accName, string args = "")
        {
            Globals.DebugWriteLine(@"[JSInvoke:General\GeneralInvocableFuncs.CreateShortcut]");
            var platform = page;

            page = page.ToLowerInvariant();
            if (args.Length > 0 && args[0] != ':')
            {
                args = $" {args}";                                    // Add a space before arguments if doesn't start with ':'
            }
            var platformName      = $"Switch to {accName} [{platform}]";
            var originalAccId     = accId;
            var primaryPlatformId = "" + page[0];
            var bgImg             = Path.Join(GeneralFuncs.WwwRoot(), $"\\img\\platform\\{page}.png");

            switch (page)
            {
            case "steam":
            {
                var ePersonaState = -1;
                if (args.Length == 2)
                {
                    _ = int.TryParse(args[1].ToString(), out ePersonaState);
                }
                platformName = $"Switch to {accName} {(args.Length > 0 ? $"({SteamSwitcherFuncs.PersonaStateToString(ePersonaState)})" : "")} [{platform}]";
                break;
            }

            case "basic":
                page = CurrentPlatform.SafeName;
                primaryPlatformId = CurrentPlatform.PrimaryId;
                platform          = CurrentPlatform.FullName;
                platformName      = $"Switch to {accName} [{platform}]";

                var platformImgPath        = "\\img\\platform\\" + CurrentPlatform.SafeName + ".png";
                var currentPlatformImgPath = Path.Join(GeneralFuncs.WwwRoot(), platformImgPath);
                bgImg = File.Exists(currentPlatformImgPath)
                        ? Path.Join(currentPlatformImgPath)
                        : Path.Join(GeneralFuncs.WwwRoot(), "\\img\\BasicDefault.png");
                break;
            }

            var fgImg = Path.Join(GeneralFuncs.WwwRoot(), $"\\img\\profiles\\{page}\\{accId}.jpg");

            if (!File.Exists(fgImg))
            {
                fgImg = Path.Join(GeneralFuncs.WwwRoot(), $"\\img\\profiles\\{page}\\{accId}.png");
            }
            if (!File.Exists(fgImg))
            {
                _ = ShowToast("error", Lang["Toast_CantFindImage"], Lang["Toast_CantCreateShortcut"], "toastarea");
                return;
            }

            var s = new Shortcut();

            _ = s.Shortcut_Platform(
                Shortcut.Desktop,
                platformName,
                $"+{primaryPlatformId}:{originalAccId}{args}",
                $"Switch to {accName} [{platform}] in TcNo Account Switcher",
                true);
            s.CreateCombinedIcon(bgImg, fgImg, $"{accId}.ico");
            s.TryWrite();

            _ = AppSettings.StreamerModeTriggered
                ? ShowToast("success", Lang["Toast_ShortcutCreated"], Lang["Success"], "toastarea")
                : ShowToast("success", Lang["ForName", new { name = accName }], Lang["Toast_ShortcutCreated"], "toastarea");
        }