Пример #1
0
    //上一步
    protected void ibtnShang_Click(object sender, ImageClickEventArgs e)
    {
        PageIndex--;
        List <Account> list = AccountsManager.GetAllAccounts();

        repAccounts(list);
    }
Пример #2
0
 private async Task <List <AccountDataItem> > GetAllAccounts()
 {
     return(await System.Threading.Tasks.Task.Run(async delegate
     {
         return await AccountsManager.GetAllAccounts();
     }));
 }
Пример #3
0
    //下一步
    protected void ibtnXia_Click(object sender, ImageClickEventArgs e)
    {
        pageIndex++;
        List <Account> list = AccountsManager.GetAllAccounts();

        repAccounts(list);
    }
Пример #4
0
        /// <summary>
        /// Used for syncing from background task (raw push notification).
        /// </summary>
        /// <param name="accountId"></param>
        /// <returns></returns>
        public static async System.Threading.Tasks.Task SyncAccountInBackgroundAsync(long accountId)
        {
            try
            {
                if (accountId == 0)
                {
                    return;
                }

                // First try to grab cached
                var account = AccountsManager.GetCurrentlyLoadedAccounts().FirstOrDefault(i => i.AccountId == accountId);
                if (account == null)
                {
                    account = (await AccountsManager.GetAllAccounts()).FirstOrDefault(i => i.AccountId == accountId);
                }
                if (account == null)
                {
                    return;
                }

                var syncResult = await Sync.SyncAccountAsync(account);

                if (syncResult != null && syncResult.SaveChangesTask != null)
                {
                    await syncResult.SaveChangesTask.WaitForAllTasksAsync();
                }
            }
            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }
        }
Пример #5
0
        protected override async Task PerformWorkAsync(JobParameters @params)
        {
            long accountId = @params.Extras.GetLong("AccountId");

            if (accountId == 0)
            {
                return;
            }

            // First try to grab cached
            var account = AccountsManager.GetCurrentlyLoadedAccounts().FirstOrDefault(i => i.AccountId == accountId);

            if (account == null)
            {
                account = (await AccountsManager.GetAllAccounts()).FirstOrDefault(i => i.AccountId == accountId);
            }
            if (account == null)
            {
                return;
            }

            var syncResult = await Sync.SyncAccountAsync(account);

            if (syncResult != null && syncResult.SaveChangesTask != null)
            {
                await syncResult.SaveChangesTask.WaitForAllTasksAsync();
            }
        }
Пример #6
0
        // 7.Wszystkie konta
        private void AllAccounts()
        {
            Console.Clear();
            Console.WriteLine("Wszystkie konta");
            Console.WriteLine();

            foreach (Account accounts in _accountsManager.GetAllAccounts())
            {
                _printer.Print(accounts);
            }

            Console.ReadKey();
        }
Пример #7
0
        public async void Handle(BackgroundActivatedEventArgs args)
        {
            var taskInstance = args.TaskInstance;

            taskInstance.Canceled += TaskInstance_Canceled;

            var deferral = taskInstance.GetDeferral();

            try
            {
                var accounts = await AccountsManager.GetAllAccounts();

                var cancellationToken = _cancellationTokenSource.Token;

                try
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    foreach (var a in accounts)
                    {
                        var data = await AccountDataStore.Get(a.LocalAccountId);

                        cancellationToken.ThrowIfCancellationRequested();

                        await ClassRemindersExtension.Current?.ResetAllRemindersAsync(a);

                        await RemindersExtension.Current?.ResetReminders(a, data);

                        await TileHelper.UpdateTileNotificationsForAccountAsync(a, data);

                        cancellationToken.ThrowIfCancellationRequested();
                    }
                }

                catch (OperationCanceledException) { }
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }

            finally
            {
                deferral.Complete();
            }
        }
Пример #8
0
        /// <summary>
        /// Will not throw any exceptions, it'll silently fail if error. Deletes all old data once done.
        /// </summary>
        /// <returns></returns>
        public static async System.Threading.Tasks.Task UpgradeAccounts()
        {
            try
            {
                // If there's already accounts in the app, do nothing
                if ((await AccountsManager.GetAllAccounts()).Any())
                {
                    return;
                }

                await Store.LoadLogins();

                foreach (LoginWin login in Store.Logins)
                {
                    try
                    {
                        await UpgradeAccount(login);
                    }

                    catch (Exception ex)
                    {
                        try
                        {
                            TelemetryExtension.Current?.TrackException(ex);
                        }

                        catch { }
                    }
                }
            }

            catch (Exception ex)
            {
                try
                {
                    TelemetryExtension.Current?.TrackException(ex);
                }

                catch { }
            }

            finally
            {
                await DeleteOldData();
            }
        }
Пример #9
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (Session["adminUser"] != null)
     {
         user = Session["adminUser"] as AdminUser;
         if (!IsPostBack)
         {
             List <Account> list = AccountsManager.GetAllAccounts();
             repAccounts(list);
         }
     }
     else
     {
         this.Response.Write("<script>alert('登陆超时,请从新登陆...');window.location='Default.aspx';</script>");
         return;
     }
 }
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            SharedInitialization.Initialize();
            InitializeUWP.Initialize();

            taskInstance.Canceled += TaskInstance_Canceled;

            var deferral = taskInstance.GetDeferral();

            try
            {
                var accounts = await AccountsManager.GetAllAccounts();

                var cancellationToken = _cancellationTokenSource.Token;

                try
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    foreach (var a in accounts)
                    {
                        var data = await AccountDataStore.Get(a.LocalAccountId);

                        cancellationToken.ThrowIfCancellationRequested();

                        await TileHelper.UpdateTileNotificationsForAccountAsync(a, data);

                        cancellationToken.ThrowIfCancellationRequested();
                    }
                }

                catch (OperationCanceledException) { }
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }

            // TODO: Re-schedule toast notifications?

            finally
            {
                deferral.Complete();
            }
        }
Пример #11
0
        public async Task HandleNormalLaunchActivation()
        {
            // Restore previous login
            AccountDataItem lastAccount = await AccountsManager.GetLastLogin();

            if (lastAccount == null && (await AccountsManager.GetAllAccounts()).Count == 0)
            {
                // If no accounts, we create the default account
                try
                {
                    var account = await AccountsManager.CreateAndInitializeAccountAsync(AccountsManager.DefaultOfflineAccountUsername, "", null, 0, 0);

                    if (account != null)
                    {
                        lastAccount = account;
                        TelemetryExtension.Current?.TrackEvent("CreatedDefaultOfflineAccount");
                    }
                    else
                    {
                        TelemetryExtension.Current?.TrackException(new Exception("Tried creating default offline account, but it returned null"));
                    }
                }
                catch (Exception ex)
                {
                    TelemetryExtension.Current?.TrackException(ex);
                }
            }

            if (lastAccount != null && lastAccount.IsAutoLoginPossible && lastAccount.AutoLogin)
            {
                await this.SetCurrentAccount(lastAccount);

                PromoRegistrations.StartPromoLogic(lastAccount);
                LoggedInFromNormalActivation?.Invoke(this, lastAccount);
            }

            else
            {
                await this.SetCurrentAccount(null);
            }
        }
Пример #12
0
        public static async System.Threading.Tasks.Task UpgradeAccounts()
        {
            try
            {
                // If there's already accounts in the app, do nothing
                if (!(await AccountsManager.GetAllAccounts()).Any())
                {
                    foreach (string dir in GetDirectoryNames(Files.ACCOUNTS_FOLDER))
                    {
                        await UpgradeAccount(dir);
                    }


                    // We theoretically should be able to retrieve the old settings
                    // according to this post: https://www.pedrolamas.com/2014/08/14/upgrading-from-the-isolatedstoragesettings-to-applicationdata-localsettings/
                    // but it's easier to just set the single account as logged in
                    // since the code from that website didn't work perfectly, and not worth the effort


                    var accounts = await AccountsManager.GetAllAccounts();

                    // If they only had one account, we'll set it as last login
                    // We unfortunately can't transfer the Silverlight settings unfortunately
                    // so this is the best thing we can do.
                    if (accounts.Count == 1)
                    {
                        var onlyAccount = accounts.First();

                        AccountsManager.SetLastLoginIdentifier(onlyAccount.LocalAccountId);
                    }
                }
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }

            // Secondary Silverlight tiles should be automatically disappear, but don't due to a bug
            DeleteOldData();
        }
        private async void Initialize()
        {
            Accounts = new MyObservableList <AccountDataItem>(await AccountsManager.GetAllAccounts());

            // TODO: What if RememberUsername is edited? That's quite a minor case, not worth building something for, but it's potentially a flaw
            AccountsWithRememberUsername = Accounts.Sublist(i => i.RememberUsername && !i.IsDefaultOfflineAccount);

            AccountsManager.OnAccountDeleted += new WeakEventHandler <Guid>(AccountsManager_OnAccountDeleted).Handler;

            var lastLoginLocalId = AccountsManager.GetLastLoginLocalId();

            if (lastLoginLocalId != Guid.Empty)
            {
                var lastLogin = Accounts.FirstOrDefault(i => i.LocalAccountId == lastLoginLocalId);

                if (lastLogin != null && lastLogin.RememberUsername && !lastLogin.IsDefaultOfflineAccount)
                {
                    Username = lastLogin.Username;
                }
            }
        }
Пример #14
0
        public override async void OnReceive(Context context, Intent intent)
        {
            var pendingResult = base.GoAsync();

            try
            {
                var allAccounts = await AccountsManager.GetAllAccounts();

                foreach (var account in allAccounts)
                {
                    // Update/schedule both day-of and day-before
                    await AndroidRemindersExtension.UpdateAndScheduleNotifications(context, account, fromForeground : false);
                }
            }

            catch (Exception ex)
            {
                // Avoid throwing here, since otherwise we'll get a "Power Planner has stopped responding" dialog when the user isn't even using the app
                TelemetryExtension.Current?.TrackException(ex);
            }

            pendingResult.Finish();
        }
        private static async Task ActuallyInitializeChannelsAsync(NotificationManager notificationManager)
        {
            if (Build.VERSION.SdkInt < BuildVersionCodes.O)
            {
                return;
            }

            var accounts = await AccountsManager.GetAllAccounts();

            var groups = notificationManager.NotificationChannelGroups;

            // Delete groups which the account was deleted
            foreach (var g in groups)
            {
                if (!accounts.Any(a => a.LocalAccountId.ToString() == g.Id))
                {
                    notificationManager.DeleteNotificationChannelGroup(g.Id);
                }
            }

            // Add/update groups
            foreach (var a in accounts)
            {
                var g = groups.FirstOrDefault(i => i.Id == a.LocalAccountId.ToString());
                if (g != null)
                {
                    // If details are already correct
                    if (g.Name == a.Username)
                    {
                        // Do nothing
                        continue;
                    }
                }

                // Otherwise need to create (or update) group
                g = new NotificationChannelGroup(a.LocalAccountId.ToString(), a.Username);
                notificationManager.CreateNotificationChannelGroup(g);
            }

            // Update/create channels
            foreach (var a in accounts)
            {
                var channelDayBefore = new NotificationChannel(GetChannelIdForDayBefore(a.LocalAccountId), "Day before reminders", NotificationImportance.High)
                {
                    Description          = "Daily reminders that tell you what incomplete tasks or events you have coming up tomorrow.",
                    Group                = a.LocalAccountId.ToString(),
                    LightColor           = new Color(55, 84, 198), // #3754C6 (a bit more vibrant than my other theme colors)
                    LockscreenVisibility = NotificationVisibility.Public
                };
                channelDayBefore.SetShowBadge(true);
                channelDayBefore.EnableVibration(true);
                notificationManager.CreateNotificationChannel(channelDayBefore);

                var channelDayOf = new NotificationChannel(GetChannelIdForDayOf(a.LocalAccountId), "Day of reminders", NotificationImportance.High)
                {
                    Description          = "Reminders that appear an hour before an incomplete task or event is due.",
                    Group                = a.LocalAccountId.ToString(),
                    LightColor           = new Color(55, 84, 198), // #3754C6 (a bit more vibrant than my other theme colors)
                    LockscreenVisibility = NotificationVisibility.Public
                };
                channelDayOf.SetShowBadge(true);
                channelDayOf.EnableVibration(true);
                notificationManager.CreateNotificationChannel(channelDayOf);
            }
        }
Пример #16
0
 private List <Account> getAccounts()
 {
     return(AccountsManager.GetAllAccounts());
 }
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            SharedInitialization.Initialize();
            InitializeUWP.Initialize();

            taskInstance.Canceled += TaskInstance_Canceled;

            var deferral = taskInstance.GetDeferral();


            try
            {
                RawNotification notification = (RawNotification)taskInstance.TriggerDetails;

                long accountId = UWPPushExtension.GetAccountIdFromRawNotification(notification);

                if (accountId == 0)
                {
                    return;
                }

                AccountDataItem account = (await AccountsManager.GetAllAccounts()).FirstOrDefault(i => i.AccountId == accountId);

                if (account == null)
                {
                    return;
                }

                var cancellationToken = _cancellationTokenSource.Token;

                try
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    var result = await Sync.SyncAccountAsync(account);

                    // If succeeded
                    if (result != null && result.Error == null)
                    {
                        // Flag as updated by background task so foreground app can update data
                        AccountDataStore.SetUpdatedByBackgroundTask();
                    }

                    // Need to wait for the tile/toast tasks to finish before we release the deferral
                    if (result != null && result.SaveChangesTask != null)
                    {
                        await result.SaveChangesTask.WaitForAllTasksAsync();
                    }
                }

                catch (OperationCanceledException) { }

                // Wait for the calendar integration to complete
                await AppointmentsExtension.Current?.GetTaskForAllCompleted();
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }

            finally
            {
                deferral.Complete();
            }
        }