コード例 #1
0
        public static IDisposable BindPreviewLoading(
            this ReplyModel model,
            IPreviewLoader previewLoader)
        {
            if (model.Preview == null)
            {
                model.Preview = GetPreview(previewLoader, model);

                if (model.Preview == null || model.Preview.Bitmap == null)
                {
                    return(LoadPreview(previewLoader, model)
                           .SubscribeOn(RxApp.TaskpoolScheduler)
                           .ObserveOn(RxApp.MainThreadScheduler)
                           .Accept(preview =>
                    {
                        model.Preview = preview;
                        model.HasPreview = true;
                    }));
                }

                model.HasPreview = true;
            }

            return(Disposable.Empty);
        }
コード例 #2
0
        private static Preview GetPreview(IPreviewLoader previewLoader, StickerMessageModel model)
        {
            if (model.StickerData?.Thumbnail != null)
            {
                return(previewLoader.GetPreview(model.StickerData.Thumbnail));
            }

            return(null);
        }
コード例 #3
0
        private static IObservable <Preview> LoadPreview(IPreviewLoader previewLoader, VideoMessageModel model)
        {
            if (model.VideoData?.Thumbnail != null)
            {
                return(previewLoader.LoadPreview(model.VideoData.Thumbnail));
            }

            return(Observable.Empty <Preview>());
        }
コード例 #4
0
        private static Preview GetPreview(IPreviewLoader previewLoader, PhotoMessageModel model)
        {
            if (model.PhotoData != null)
            {
                return(previewLoader.GetPreview(model.PhotoData, PreviewQuality.High));
            }

            return(null);
        }
コード例 #5
0
        private static IObservable <Preview> LoadPreview(IPreviewLoader previewLoader, PhotoMessageModel model)
        {
            if (model.PhotoData != null)
            {
                return(previewLoader.LoadPreview(model.PhotoData, PreviewQuality.Low)
                       .Concat(previewLoader.LoadPreview(model.PhotoData, PreviewQuality.High)));
            }

            return(Observable.Empty <Preview>());
        }
コード例 #6
0
        private static IObservable <Preview> LoadPreview(IPreviewLoader previewLoader, StickerMessageModel model)
        {
            if (model.StickerData != null)
            {
                if (model.StickerData?.Thumbnail != null)
                {
                    return(previewLoader.LoadPreview(model.StickerData.Thumbnail)
                           .Concat(previewLoader.LoadPreview(model.StickerData)));
                }

                return(previewLoader.LoadPreview(model.StickerData));
            }

            return(Observable.Empty <Preview>());
        }
コード例 #7
0
        private static IObservable <Preview> LoadPreview(IPreviewLoader previewLoader, ReplyModel model)
        {
            if (model.PhotoData != null)
            {
                return(previewLoader.LoadPreview(model.PhotoData, PreviewQuality.Low));
            }

            if (model.VideoData?.Thumbnail != null)
            {
                return(previewLoader.LoadPreview(model.VideoData.Thumbnail));
            }

            if (model.StickerData?.Thumbnail != null)
            {
                return(previewLoader.LoadPreview(model.StickerData.Thumbnail));
            }

            return(Observable.Empty <Preview>());
        }
コード例 #8
0
        private static Preview GetPreview(IPreviewLoader previewLoader, ReplyModel model)
        {
            if (model.PhotoData != null)
            {
                return(previewLoader.GetPreview(model.PhotoData, PreviewQuality.Low));
            }

            if (model.VideoData?.Thumbnail != null)
            {
                return(previewLoader.GetPreview(model.VideoData.Thumbnail));
            }

            if (model.StickerData?.Thumbnail != null)
            {
                return(previewLoader.GetPreview(model.StickerData.Thumbnail));
            }

            return(null);
        }