public async void Initialize()
        {
            var settings = await settingsHelper.LoadAsync();

            if (settings == null)
            {
                return;
            }

            Address  = settings.Address;
            UserName = settings.Username;
            Password = settings.Password;
            UseHttps = settings.UseHttps;
        }
示例#2
0
        public async Task LoadData()
        {
            try
            {
                IsLoading = true;
                ShowNoSettingsNotification = false;
                Message = string.Empty;
                var settings = await settingsHelper.LoadAsync();

#if DEBUG
                /*  When debugging or deploying to IoT device use some "predefined" settings. Not included in git
                 *  public class PhotoApiSettings : PhotoFrameSettings
                 *  {
                 *      public PhotoApiSettings() : base("diskstation", "user", "password")
                 *      ...
                 */
                //settings = new PhotoApiSettings();
#endif
                if (settings == null)
                {
                    IsLoading = false;
                    ShowNoSettingsNotification = true;
                    return;
                }

                photoClient.Initialize(settings);
                var loginResult = await photoClient.LoginAsync();

                if (!loginResult)
                {
                    Message = $"Login with user {settings.Username} to {settings.Url} not successfull. Ples got to settings or check your network connection.";
                    return;
                }

                Message = $"Loading images from {settings.Address}.";
                ListItemResponse listResponse = null;

                // ToDo: if smells like duplicate code
                string albumId = null;
                if (settings.UseSmartAlbum)
                {
                    // Known bug when album contains videos
                    var albums = await photoClient.ListSmartAlbumsAsync();

                    var album = albums.data.smart_albums.FirstOrDefault(x => x.name == settings.AlbumName);
                    if (album == null)
                    {
                        return;
                    }

                    albumId      = album.id;
                    listResponse = await photoClient.ListSmartAlbumItemsAsync(albumId, 0, pageSize);
                }
                else
                {
                    var albums = await photoClient.ListAlbumsAsync();

                    var album = albums.data.items.FirstOrDefault(x => x.info.name == settings.AlbumName);
                    if (album == null)
                    {
                        return;
                    }

                    albumId      = album.id;
                    listResponse = await photoClient.ListPhotosAsync(albumId, 0, pageSize);
                }

                var images = listResponse.data?.items?.Select(p => new ImageModel(photoClient.GetBiglUrl(p), p, photoClient)).ToList();
                if (randomOrder)
                {
                    images.Shuffle();
                }

                var tempimages = images.ToList();
                Message = string.Empty;
                Images  = new ObservableCollection <ImageModel>(images);

                for (int i = images.Count; i < listResponse.data.total; i += pageSize)
                {
                    var pagingListResponse = settings.UseSmartAlbum ? (await photoClient.ListSmartAlbumItemsAsync(albumId, i, pageSize)) : (await photoClient.ListPhotosAsync(albumId, i, pageSize));
                    images = pagingListResponse.data?.items?.Select(p => new ImageModel(photoClient.GetBiglUrl(p), p, photoClient)).ToList();
                    tempimages.AddRange(images);
                }

                if (randomOrder)
                {
                    tempimages.Shuffle();
                }
                Images = new ObservableCollection <ImageModel>(tempimages);
            }
            catch (Exception e)
            {
                Message = $"Ooops something went wrong. Sorry! \r\nInfo: {e.Message}";
                Debug.WriteLine(e.Message);
            }
        }