// ---------[ UPDATE VIEW ]---------
        public void DisplayMod(ModProfile profile, ModStatistics statistics,
                               IEnumerable <ModTagCategory> tagCategories,
                               bool isModSubscribed, bool isModEnabled)
        {
            // TODO(@jackson): Remove
            if (profile == null)
            {
                return;
            }

            this.profile         = profile;
            this.statistics      = statistics;
            this.isModSubscribed = isModSubscribed;
            this.isModEnabled    = isModEnabled;

            if (modView != null)
            {
                modView.DisplayMod(profile, statistics,
                                   tagCategories,
                                   isModSubscribed, isModEnabled);

                if (modView.mediaContainer != null)
                {
                    ModMediaCollection media = profile.media;
                    bool hasMedia            = media != null;
                    hasMedia &= ((media.youTubeURLs != null && media.youTubeURLs.Length > 0) ||
                                 (media.galleryImageLocators != null && media.galleryImageLocators.Length > 0));

                    modView.mediaContainer.gameObject.SetActive(hasMedia);
                }
            }

            if (selectedMediaPreview != null)
            {
                selectedMediaPreview.DisplayLogo(profile.id, profile.logoLocator);
            }

            // - version history -
            if (versionHistoryContainer != null &&
                versionHistoryItemPrefab != null)
            {
                foreach (Transform t in versionHistoryContainer)
                {
                    GameObject.Destroy(t.gameObject);
                }

                RequestFilter modfileFilter = new RequestFilter();
                modfileFilter.sortFieldName   = ModIO.API.GetAllModfilesFilterFields.dateAdded;
                modfileFilter.isSortAscending = false;

                APIClient.GetAllModfiles(profile.id,
                                         modfileFilter,
                                         new APIPaginationParameters()
                {
                    limit = 20
                },
                                         (r) => PopulateVersionHistory(profile.id, r.items),
                                         WebRequestError.LogAsWarning);
            }
        }
Exemple #2
0
        // ---------[ UPDATE VIEW ]---------
        public void Refresh()
        {
            Debug.Assert(this.m_isInitialized);
            Debug.Assert(this.modView != null);

            ModProfile    profile = null;
            ModStatistics stats   = null;

            // set initial values
            this.SetLoadingDisplay(true);
            this.modView.DisplayLoading();

            if (this.selectedMediaPreview != null)
            {
                this.selectedMediaPreview.DisplayLoading();
            }

            // early out if NULL_ID
            if (this.m_modId == ModProfile.NULL_ID)
            {
                return;
            }

            // delegate for pushing changes to mod view
            Action pushToView = () =>
            {
                bool           isModSubscribed = ModManager.GetSubscribedModIds().Contains(this.m_modId);
                bool           isModEnabled    = ModManager.GetEnabledModIds().Contains(this.m_modId);
                ModRatingValue rating          = ModBrowser.instance.GetModRating(this.m_modId);

                if (profile != null)
                {
                    modView.DisplayMod(profile, stats,
                                       this.m_tagCategories,
                                       isModSubscribed, isModEnabled,
                                       rating);

                    // media container
                    if (modView.mediaContainer != null)
                    {
                        ModMediaCollection media = profile.media;
                        bool hasMedia            = media != null;
                        hasMedia &= ((media.youTubeURLs != null && media.youTubeURLs.Length > 0) ||
                                     (media.galleryImageLocators != null && media.galleryImageLocators.Length > 0));

                        modView.mediaContainer.gameObject.SetActive(hasMedia);
                    }

                    // media preview
                    if (selectedMediaPreview != null)
                    {
                        selectedMediaPreview.DisplayLogo(profile.id, profile.logoLocator);
                    }
                }
            };

            // profile
            ModProfileRequestManager.instance.RequestModProfile(this.m_modId,
                                                                (p) =>
            {
                if (this == null)
                {
                    return;
                }

                this.SetLoadingDisplay(false);
                profile = p;
                pushToView();
            },
                                                                WebRequestError.LogAsWarning);

            // statistics
            ModStatisticsRequestManager.instance.RequestModStatistics(this.m_modId,
                                                                      (s) =>
            {
                if (this == null)
                {
                    return;
                }

                stats = s;
                pushToView();
            },
                                                                      WebRequestError.LogAsWarning);

            // version history
            if (versionHistoryContainer != null &&
                versionHistoryItemPrefab != null)
            {
                RequestFilter modfileFilter = new RequestFilter();
                modfileFilter.sortFieldName   = ModIO.API.GetAllModfilesFilterFields.dateAdded;
                modfileFilter.isSortAscending = false;

                APIClient.GetAllModfiles(this.m_modId,
                                         modfileFilter,
                                         new APIPaginationParameters()
                {
                    limit = 10
                },
                                         (r) =>
                {
                    this.m_versionHistory = r.items;
                    PopulateVersionHistory();
                },
                                         WebRequestError.LogAsWarning);
            }
        }