private void LoadTemplates()
        {
            Items.Clear();
            PageItems.Clear();
            int count = 0;

            string[] files = Directory.GetFiles(Constants.TemplateThumbnailRoot);
            if (files == null)
            {
                Debug.Write("Error: Reading files from the souvenirs image folder returns null.");
                return;
            }
            foreach (var file in files)
            {
                string        name     = Path.GetFileNameWithoutExtension(file);
                TemplateModel template = new TemplateModel(name, Path.GetFullPath(file), name);
                if (count < Constants.NumberOfItemsPerPage)
                {
                    PageItems.Add(template);
                    ++count;
                }
                Items.Add(template);
            }
            PageCursor    = 1;
            NumberOfPages = (Items.Count + Constants.NumberOfItemsPerPage - 1) / Constants.NumberOfItemsPerPage;
            PageBackCommand.RaiseCanExecuteChanged();
            PageForwardCommand.RaiseCanExecuteChanged();
        }
        private async void LoadAlbumsAsync()
        {
            lock (loadAlbumsMutex)
            {
                if (isLoadingAlbums)
                {
                    return;
                }

                isLoadingAlbums = true;
            }

            Items.Clear();
            PageItems.Clear();
            int count  = 0;
            var albums = await oneDriveController.GetAlbumsAsync();

            if (albums == null)
            {
                if (!HasInternetConnection)
                {
                    Debug.WriteLine("No internet connection.");
                }
                ItemsExist = false;
                IsLoading  = false;

                Debug.WriteLine("Error: Fetching albums from OneDrive returns null.");

                lock (loadAlbumsMutex)
                {
                    isLoadingAlbums = false;
                }
            }
            else
            {
                foreach (var album in albums)
                {
                    var bundle = new BundleModel(album.Id, album.Name, album.ThumbnailUrl);
                    if (count < Constants.NumberOfItemsPerPage)
                    {
                        PageItems.Add(bundle);
                        ++count;
                    }
                    Items.Add(bundle);
                }
            }

            PageCursor    = 1;
            NumberOfPages = (Items.Count + Constants.NumberOfItemsPerPage - 1) / Constants.NumberOfItemsPerPage;
            NumberOfPages = NumberOfPages < 1 ? 1 : NumberOfPages;
            ItemsExist    = Items.Count != 0;

            PageBackCommand.RaiseCanExecuteChanged();
            PageForwardCommand.RaiseCanExecuteChanged();

            IsLoading = false;

            lock (loadAlbumsMutex)
            {
                isLoadingAlbums = false;
            }
        }