< Summary

Class:ExploreV2MenuComponentController
Assembly:ExploreV2
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/ExploreV2/Scripts/MainMenu/ExploreV2Menu/ExploreV2MenuComponentController.cs
Covered lines:202
Uncovered lines:31
Coverable lines:233
Total lines:432
Line coverage:86.6% (202 of 233)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ExploreV2MenuComponentController()0%110100%
Initialize()0%10100100%
Dispose()0%880100%
SetVisibility(...)0%110100%
OnSectionInitializedChanged(...)0%110100%
SectionInitializedChanged(...)0%2.062075%
OnSectionVisiblityChanged(...)0%550100%
InitializePlacesAndEventsSection()0%2.032080%
OnSectionOpen(...)0%440100%
SetVisibilityOnOpenChanged(...)0%110100%
CurrentSectionIndexChanged(...)0%4.594066.67%
SetVisibility_Internal(...)0%7.017093.75%
OnAfterShowAnimation()0%2100%
SetMenuTargetVisibility(...)0%440100%
SetSectionTargetVisibility(...)0%220100%
UpdateRealmInfo(...)0%6200%
UpdateRealmInfo(...)0%770100%
UpdateAvailableRealmsInfo(...)0%660100%
ServerNameForCurrentRealm()0%3.073080%
NeedToRefreshRealms(...)0%8.66058.33%
UpdateProfileInfo(...)0%110100%
OnCloseButtonPressed(...)0%5.25080%
ConfigureOtherUIDependencies()0%110100%
CreateAnalyticsController()0%2100%
CreateView()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/ExploreV2/Scripts/MainMenu/ExploreV2Menu/ExploreV2MenuComponentController.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using DCL;
 5using Decentraland.Bff;
 6using ExploreV2Analytics;
 7using UnityEngine;
 8using Variables.RealmsInfo;
 9
 10/// <summary>
 11/// Main controller for the feature "Explore V2".
 12/// </summary>
 13public class ExploreV2MenuComponentController : IExploreV2MenuComponentController
 14{
 15    internal const ExploreSection DEFAULT_SECTION = ExploreSection.Explore;
 16
 17    internal const float MIN_TIME_AFTER_CLOSE_OTHER_UI_TO_OPEN_START_MENU = 0.1f;
 5818    internal readonly List<RealmRowComponentModel> currentAvailableRealms = new List<RealmRowComponentModel>();
 19    internal float chatInputHUDCloseTime = 0f;
 20    internal float controlsHUDCloseTime = 0f;
 21    internal ExploreSection currentOpenSection;
 22    internal float emotesHUDCloseTime = 0f;
 23    internal IExploreV2Analytics exploreV2Analytics;
 24    internal MouseCatcher mouseCatcher;
 25    internal IPlacesAndEventsSectionComponentController placesAndEventsSectionController;
 26    internal float playerInfoCardHUDCloseTime = 0f;
 27    private Dictionary<BaseVariable<bool>, ExploreSection> sectionsByInitVar;
 28    internal Dictionary<BaseVariable<bool>, ExploreSection> sectionsByVisiblityVar;
 29
 30    private Dictionary<ExploreSection, (BaseVariable<bool> initVar, BaseVariable<bool> visibilityVar)> sectionsVariables
 31
 32    internal IExploreV2MenuComponentView view;
 33
 17434    internal UserProfile ownUserProfile => UserProfile.GetOwnUserProfile();
 5835    internal RectTransform topMenuTooltipReference => view.currentTopMenuTooltipReference;
 5836    internal RectTransform placesAndEventsTooltipReference => view.currentPlacesAndEventsTooltipReference;
 5837    internal RectTransform backpackTooltipReference => view.currentBackpackTooltipReference;
 5838    internal RectTransform mapTooltipReference => view.currentMapTooltipReference;
 5839    internal RectTransform builderTooltipReference => view.currentBuilderTooltipReference;
 5840    internal RectTransform questTooltipReference => view.currentQuestTooltipReference;
 5841    internal RectTransform settingsTooltipReference => view.currentSettingsTooltipReference;
 5842    internal RectTransform profileCardTooltipReference => view.currentProfileCardTooltipReference;
 43
 34744    internal BaseVariable<bool> isOpen => DataStore.i.exploreV2.isOpen;
 27345    internal BaseVariable<int> currentSectionIndex => DataStore.i.exploreV2.currentSectionIndex;
 8146    internal BaseVariable<bool> profileCardIsOpen => DataStore.i.exploreV2.profileCardIsOpen;
 12047    internal BaseVariable<bool> isInitialized => DataStore.i.exploreV2.isInitialized;
 5848    internal BaseVariable<bool> isPlacesAndEventsSectionInitialized => DataStore.i.exploreV2.isPlacesAndEventsSectionIni
 6549    internal BaseVariable<bool> placesAndEventsVisible => DataStore.i.exploreV2.placesAndEventsVisible;
 6050    internal BaseVariable<bool> isAvatarEditorInitialized => DataStore.i.HUDs.isAvatarEditorInitialized;
 6551    internal BaseVariable<bool> avatarEditorVisible => DataStore.i.HUDs.avatarEditorVisible;
 6052    internal BaseVariable<bool> isNavmapInitialized => DataStore.i.HUDs.isNavMapInitialized;
 6553    internal BaseVariable<bool> navmapVisible => DataStore.i.HUDs.navmapVisible;
 6054    internal BaseVariable<bool> isBuilderInitialized => DataStore.i.builderInWorld.isInitialized;
 6555    internal BaseVariable<bool> builderVisible => DataStore.i.HUDs.builderProjectsPanelVisible;
 6056    internal BaseVariable<bool> isQuestInitialized => DataStore.i.Quests.isInitialized;
 6557    internal BaseVariable<bool> questVisible => DataStore.i.HUDs.questsPanelVisible;
 6058    internal BaseVariable<bool> isSettingsPanelInitialized => DataStore.i.settings.isInitialized;
 6559    internal BaseVariable<bool> settingsVisible => DataStore.i.settings.settingsPanelVisible;
 60
 5861    internal BaseVariable<bool> controlsVisible => DataStore.i.HUDs.controlsVisible;
 5862    internal BaseVariable<bool> emotesVisible => DataStore.i.HUDs.emotesVisible;
 5863    internal BaseVariable<bool> chatInputVisible => DataStore.i.HUDs.chatInputVisible;
 5864    internal BooleanVariable playerInfoCardVisible => CommonScriptableObjects.playerInfoCardVisibleState;
 2765    internal BaseVariable<bool> isPromoteChannelsToastVisible => DataStore.i.channels.isPromoteToastVisible;
 66
 67    public void Initialize()
 68    {
 5869        sectionsVariables = new Dictionary<ExploreSection, (BaseVariable<bool>, BaseVariable<bool>)>
 70        {
 71            { ExploreSection.Explore, (isPlacesAndEventsSectionInitialized,  placesAndEventsVisible) },
 72            { ExploreSection.Backpack, (isAvatarEditorInitialized,  avatarEditorVisible) },
 73            { ExploreSection.Map, (isNavmapInitialized,  navmapVisible) },
 74            { ExploreSection.Builder, (isBuilderInitialized,  builderVisible) },
 75            { ExploreSection.Quest, (isQuestInitialized,  questVisible) },
 76            { ExploreSection.Settings, (isSettingsPanelInitialized,  settingsVisible) },
 77        };
 75478        sectionsByInitVar = sectionsVariables.ToDictionary(pair => pair.Value.initVar, pair => pair.Key);
 75479        sectionsByVisiblityVar = sectionsVariables.ToDictionary(pair => pair.Value.visibilityVar, pair => pair.Key);
 80
 5881        mouseCatcher = SceneReferences.i?.mouseCatcher;
 5882        exploreV2Analytics = CreateAnalyticsController();
 5883        view = CreateView();
 5884        SetVisibility(false);
 85
 5886        DataStore.i.realm.realmName.OnChange += UpdateRealmInfo;
 5887        UpdateRealmInfo( DataStore.i.realm.realmName.Get());
 88
 5889        DataStore.i.realm.realmsInfo.OnSet += UpdateAvailableRealmsInfo;
 5890        UpdateAvailableRealmsInfo(DataStore.i.realm.realmsInfo.Get());
 91
 5892        ownUserProfile.OnUpdate += UpdateProfileInfo;
 5893        UpdateProfileInfo(ownUserProfile);
 5894        view.currentProfileCard.onClick?.AddListener(() => { profileCardIsOpen.Set(!profileCardIsOpen.Get()); });
 5895        view.currentRealmViewer.onLogoClick?.AddListener(view.ShowRealmSelectorModal);
 5896        view.OnCloseButtonPressed += OnCloseButtonPressed;
 5897        view.OnAfterShowAnimation += OnAfterShowAnimation;
 98
 5899        DataStore.i.exploreV2.topMenuTooltipReference.Set(topMenuTooltipReference);
 58100        DataStore.i.exploreV2.placesAndEventsTooltipReference.Set(placesAndEventsTooltipReference);
 58101        DataStore.i.exploreV2.backpackTooltipReference.Set(backpackTooltipReference);
 58102        DataStore.i.exploreV2.mapTooltipReference.Set(mapTooltipReference);
 58103        DataStore.i.exploreV2.builderTooltipReference.Set(builderTooltipReference);
 58104        DataStore.i.exploreV2.questTooltipReference.Set(questTooltipReference);
 58105        DataStore.i.exploreV2.settingsTooltipReference.Set(settingsTooltipReference);
 58106        DataStore.i.exploreV2.profileCardTooltipReference.Set(profileCardTooltipReference);
 107
 58108        view.OnSectionOpen += OnSectionOpen;
 109
 58110        isOpen.OnChange += SetVisibilityOnOpenChanged;
 58111        SetVisibilityOnOpenChanged(isOpen.Get());
 112
 58113        currentSectionIndex.OnChange += CurrentSectionIndexChanged;
 58114        CurrentSectionIndexChanged(currentSectionIndex.Get(), 0);
 115
 812116        foreach (var sectionsVariables in sectionsVariables.Values)
 117        {
 348118            sectionsVariables.initVar.OnChangeWithSenderInfo += OnSectionInitializedChanged;
 348119            OnSectionInitializedChanged(sectionsVariables.initVar, sectionsVariables.initVar.Get());
 120
 348121            sectionsVariables.visibilityVar.OnChangeWithSenderInfo += OnSectionVisiblityChanged;
 348122            OnSectionVisiblityChanged(sectionsVariables.visibilityVar, sectionsVariables.visibilityVar.Get());
 123        }
 124
 58125        ConfigureOtherUIDependencies();
 126
 58127        isInitialized.Set(true);
 128
 58129        currentSectionIndex.Set((int)DEFAULT_SECTION, false);
 130
 131        //view.ConfigureEncapsulatedSection(ExploreSection.Backpack, DataStore.i.exploreV2.configureBackpackInFullscreen
 58132        view.ConfigureEncapsulatedSection(ExploreSection.Map, DataStore.i.exploreV2.configureMapInFullscreenMenu);
 58133        view.ConfigureEncapsulatedSection(ExploreSection.Builder, DataStore.i.exploreV2.configureBuilderInFullscreenMenu
 58134        view.ConfigureEncapsulatedSection(ExploreSection.Quest, DataStore.i.exploreV2.configureQuestInFullscreenMenu);
 58135        view.ConfigureEncapsulatedSection(ExploreSection.Settings, DataStore.i.exploreV2.configureSettingsInFullscreenMe
 58136    }
 137
 138    public void Dispose()
 139    {
 58140        DataStore.i.realm.realmName.OnChange -= UpdateRealmInfo;
 58141        DataStore.i.realm.realmsInfo.OnSet -= UpdateAvailableRealmsInfo;
 142
 58143        ownUserProfile.OnUpdate -= UpdateProfileInfo;
 58144        view?.currentProfileCard.onClick?.RemoveAllListeners();
 145
 58146        isOpen.OnChange -= SetVisibilityOnOpenChanged;
 58147        currentSectionIndex.OnChange -= CurrentSectionIndexChanged;
 148
 812149        foreach (var sectionsVariables in sectionsVariables.Values)
 150        {
 348151            sectionsVariables.initVar.OnChangeWithSenderInfo -= OnSectionInitializedChanged;
 348152            sectionsVariables.visibilityVar.OnChangeWithSenderInfo -= OnSectionVisiblityChanged;
 153        }
 154
 58155        if (placesAndEventsSectionController != null)
 156        {
 1157            placesAndEventsSectionController.OnCloseExploreV2 -= OnCloseButtonPressed;
 1158            placesAndEventsSectionController.Dispose();
 159        }
 160
 58161        if (view != null)
 162        {
 58163            view.currentProfileCard.onClick?.RemoveAllListeners();
 58164            view.currentRealmViewer.onLogoClick?.RemoveAllListeners();
 58165            view.OnCloseButtonPressed -= OnCloseButtonPressed;
 58166            view.OnAfterShowAnimation -= OnAfterShowAnimation;
 58167            view.OnSectionOpen -= OnSectionOpen;
 58168            view.Dispose();
 169        }
 58170    }
 171
 84172    public void SetVisibility(bool visible) => isOpen.Set(visible);
 173
 174    private void OnSectionInitializedChanged(BaseVariable<bool> initVar, bool initialized, bool _ = false) =>
 353175        SectionInitializedChanged(sectionsByInitVar[initVar], initialized);
 176
 177    internal void SectionInitializedChanged(ExploreSection section, bool initialized, bool _ = false)
 178    {
 363179        view.SetSectionActive(section, initialized);
 180
 363181        if (section == ExploreSection.Explore && initialized)
 0182            InitializePlacesAndEventsSection();
 363183    }
 184
 185    private void OnSectionVisiblityChanged(BaseVariable<bool> visibilityVar, bool visible, bool previous = false)
 186    {
 360187        ExploreSection section = sectionsByVisiblityVar[visibilityVar];
 360188        BaseVariable<bool> initVar = section == ExploreSection.Explore ? isInitialized : sectionsVariables[section].init
 189
 360190        if (!initVar.Get() || DataStore.i.common.isSignUpFlow.Get())
 151191            return;
 192
 209193        SetMenuTargetVisibility(sectionsByVisiblityVar[visibilityVar], visible);
 209194    }
 195
 196    internal void InitializePlacesAndEventsSection()
 197    {
 1198        if (placesAndEventsSectionController != null)
 0199            return;
 200
 1201        placesAndEventsSectionController = new PlacesAndEventsSectionComponentController(view.currentPlacesAndEventsSect
 1202        placesAndEventsSectionController.OnCloseExploreV2 += OnCloseButtonPressed;
 1203    }
 204
 205    internal void OnSectionOpen(ExploreSection section)
 206    {
 12207        if (section != currentOpenSection)
 11208            exploreV2Analytics.SendStartMenuSectionVisibility(currentOpenSection, false);
 209
 12210        currentOpenSection = section;
 211
 12212        if (currentOpenSection == ExploreSection.Backpack)
 2213            view.ConfigureEncapsulatedSection(ExploreSection.Backpack, DataStore.i.exploreV2.configureBackpackInFullscre
 214
 168215        foreach (var visibilityVar in sectionsByVisiblityVar.Keys)
 72216            visibilityVar.Set(currentOpenSection == sectionsByVisiblityVar[visibilityVar]);
 217
 12218        profileCardIsOpen.Set(false);
 12219    }
 220
 89221    internal void SetVisibilityOnOpenChanged(bool open, bool _ = false) => SetVisibility_Internal(open);
 222
 223    internal void CurrentSectionIndexChanged(int current, int previous)
 224    {
 499225        if (DataStore.i.exploreV2.isInShowAnimationTransiton.Get())
 0226            return;
 227
 499228        if (Enum.IsDefined(typeof(ExploreSection), current))
 229        {
 409230            if (!view.IsSectionActive((ExploreSection)current))
 409231                CurrentSectionIndexChanged(current + 1, current);
 232            else
 0233                view.GoToSection((ExploreSection)current);
 0234        }
 235        else
 90236            view.GoToSection(0);
 90237    }
 238
 239    internal void SetVisibility_Internal(bool visible)
 240    {
 89241        if (view == null || DataStore.i.common.isSignUpFlow.Get())
 0242            return;
 243
 89244        if (visible)
 245        {
 27246            mouseCatcher?.UnlockCursor();
 247
 27248            if (DataStore.i.common.isTutorialRunning.Get())
 1249                view.GoToSection(DEFAULT_SECTION);
 250
 27251            isPromoteChannelsToastVisible.Set(false);
 27252        }
 253        else
 254        {
 62255            CommonScriptableObjects.isFullscreenHUDOpen.Set(false);
 256
 868257            foreach (var sectionsVariables in sectionsVariables.Values)
 372258                sectionsVariables.visibilityVar.Set(false);
 259
 62260            profileCardIsOpen.Set(false);
 261        }
 262
 89263        view.SetVisible(visible);
 89264    }
 265
 0266    internal void OnAfterShowAnimation() => CommonScriptableObjects.isFullscreenHUDOpen.Set(true);
 267
 268    internal void SetMenuTargetVisibility(ExploreSection section, bool toVisible, bool _ = false)
 269    {
 227270        if (toVisible)
 271        {
 22272            if (currentSectionIndex.Get() != (int)section)
 19273                currentSectionIndex.Set((int)section);
 274
 22275            SetSectionTargetVisibility(section, toVisible: true);
 22276            view.GoToSection(section);
 22277        }
 205278        else if (currentOpenSection == section)
 279        {
 63280            SetSectionTargetVisibility(section, toVisible: false);
 281        }
 205282    }
 283
 284    private void SetSectionTargetVisibility(ExploreSection section, bool toVisible)
 285    {
 85286        bool wasInTargetVisibility =  toVisible ^ isOpen.Get();
 287
 85288        if (wasInTargetVisibility)
 289        {
 22290            SetVisibility(toVisible);
 22291            exploreV2Analytics.SendStartMenuVisibility(toVisible, ExploreUIVisibilityMethod.FromShortcut);
 292        }
 85293        exploreV2Analytics.SendStartMenuSectionVisibility(section, toVisible);
 85294    }
 295
 296    private void UpdateRealmInfo(string current, string previous)
 297    {
 0298        if (string.IsNullOrEmpty(current))
 0299            return;
 300
 0301        UpdateRealmInfo(current);
 0302    }
 303
 304    internal void UpdateRealmInfo(string realmName)
 305    {
 59306        if (string.IsNullOrEmpty(realmName))
 58307            return;
 308
 309        // Get the name of the current realm
 1310        view.currentRealmViewer.SetRealm(realmName);
 1311        view.currentRealmSelectorModal.SetCurrentRealm(realmName);
 312
 313        // Calculate number of users in the current realm
 1314        List<RealmModel> realmList = DataStore.i.realm.realmsInfo.Get()?.ToList();
 2315        RealmModel currentRealmModel = realmList?.FirstOrDefault(r => r.serverName == realmName);
 1316        int realmUsers = 0;
 1317        if (currentRealmModel != null)
 1318            realmUsers = currentRealmModel.usersCount;
 319
 1320        view.currentRealmViewer.SetNumberOfUsers(realmUsers);
 1321    }
 322
 323    internal void UpdateAvailableRealmsInfo(IEnumerable<RealmModel> currentRealmList)
 324    {
 60325        List<RealmModel> realmList = currentRealmList?.ToList();
 326
 60327        if (!NeedToRefreshRealms(realmList))
 58328            return;
 329
 2330        currentAvailableRealms.Clear();
 331
 2332        if (realmList != null)
 333        {
 2334            string serverName = ServerNameForCurrentRealm();
 12335            foreach (RealmModel realmModel in realmList)
 336            {
 4337                currentAvailableRealms.Add(new RealmRowComponentModel
 338                {
 339                    name = realmModel.serverName,
 340                    players = realmModel.usersCount,
 341                    isConnected = realmModel.serverName == serverName
 342                });
 343            }
 344        }
 345
 2346        view.currentRealmSelectorModal.SetAvailableRealms(currentAvailableRealms);
 2347    }
 348
 349    private string ServerNameForCurrentRealm()
 350    {
 2351        if (DataStore.i.realm.playerRealm.Get() != null)
 1352            return DataStore.i.realm.playerRealm.Get().serverName;
 1353        if(DataStore.i.realm.playerRealmAbout.Get() != null)
 0354            return DataStore.i.realm.playerRealmAbout.Get().Configurations.RealmName;
 1355        return "";
 356    }
 357
 358    internal bool NeedToRefreshRealms(IEnumerable<RealmModel> newRealmList)
 359    {
 60360        if (newRealmList == null)
 0361            return true;
 362
 60363        bool needToRefresh = false;
 60364        if (newRealmList.Count() == currentAvailableRealms.Count)
 365        {
 116366            foreach (RealmModel realm in newRealmList)
 367            {
 0368                if (!currentAvailableRealms.Exists(x => x.name == realm.serverName && x.players == realm.usersCount))
 369                {
 0370                    needToRefresh = true;
 0371                    break;
 372                }
 373            }
 374        }
 375        else
 2376            needToRefresh = true;
 377
 60378        return needToRefresh;
 379    }
 380
 381    internal void UpdateProfileInfo(UserProfile profile)
 382    {
 59383        view.currentProfileCard.SetIsClaimedName(profile.hasClaimedName);
 59384        view.currentProfileCard.SetProfileName(profile.userName);
 59385        view.currentProfileCard.SetProfileAddress(profile.ethAddress);
 59386        view.currentProfileCard.SetProfilePicture(profile.face256SnapshotURL);
 59387    }
 388
 389    internal void OnCloseButtonPressed(bool fromShortcut)
 390    {
 2391        if (DataStore.i.builderInWorld.areShortcutsBlocked.Get() || !isOpen.Get() )
 0392            return;
 393
 2394        SetVisibility(false);
 2395        exploreV2Analytics.SendStartMenuVisibility(false, fromShortcut ? ExploreUIVisibilityMethod.FromShortcut : Explor
 2396    }
 397
 398    internal void ConfigureOtherUIDependencies()
 399    {
 58400        controlsHUDCloseTime = Time.realtimeSinceStartup;
 58401        controlsVisible.OnChange += (current, _) =>
 402        {
 0403            if (!current)
 0404                controlsHUDCloseTime = Time.realtimeSinceStartup;
 0405        };
 406
 58407        emotesHUDCloseTime = Time.realtimeSinceStartup;
 58408        emotesVisible.OnChange += (current, _) =>
 409        {
 0410            if (!current)
 0411                emotesHUDCloseTime = Time.realtimeSinceStartup;
 0412        };
 413
 58414        chatInputHUDCloseTime = Time.realtimeSinceStartup;
 58415        chatInputVisible.OnChange += (current, _) =>
 416        {
 0417            if (!current)
 0418                chatInputHUDCloseTime = Time.realtimeSinceStartup;
 0419        };
 420
 58421        playerInfoCardHUDCloseTime = Time.realtimeSinceStartup;
 58422        playerInfoCardVisible.OnChange += (current, _) =>
 423        {
 0424            if (!current)
 0425                playerInfoCardHUDCloseTime = Time.realtimeSinceStartup;
 0426        };
 58427    }
 428
 0429    internal virtual IExploreV2Analytics CreateAnalyticsController() => new ExploreV2Analytics.ExploreV2Analytics();
 430
 0431    protected internal virtual IExploreV2MenuComponentView CreateView() => ExploreV2MenuComponentView.Create();
 432}

Methods/Properties

ExploreV2MenuComponentController()
ownUserProfile()
topMenuTooltipReference()
placesAndEventsTooltipReference()
backpackTooltipReference()
mapTooltipReference()
builderTooltipReference()
questTooltipReference()
settingsTooltipReference()
profileCardTooltipReference()
isOpen()
currentSectionIndex()
profileCardIsOpen()
isInitialized()
isPlacesAndEventsSectionInitialized()
placesAndEventsVisible()
isAvatarEditorInitialized()
avatarEditorVisible()
isNavmapInitialized()
navmapVisible()
isBuilderInitialized()
builderVisible()
isQuestInitialized()
questVisible()
isSettingsPanelInitialized()
settingsVisible()
controlsVisible()
emotesVisible()
chatInputVisible()
playerInfoCardVisible()
isPromoteChannelsToastVisible()
Initialize()
Dispose()
SetVisibility(System.Boolean)
OnSectionInitializedChanged(.BaseVariable[Boolean], System.Boolean, System.Boolean)
SectionInitializedChanged(ExploreSection, System.Boolean, System.Boolean)
OnSectionVisiblityChanged(.BaseVariable[Boolean], System.Boolean, System.Boolean)
InitializePlacesAndEventsSection()
OnSectionOpen(ExploreSection)
SetVisibilityOnOpenChanged(System.Boolean, System.Boolean)
CurrentSectionIndexChanged(System.Int32, System.Int32)
SetVisibility_Internal(System.Boolean)
OnAfterShowAnimation()
SetMenuTargetVisibility(ExploreSection, System.Boolean, System.Boolean)
SetSectionTargetVisibility(ExploreSection, System.Boolean)
UpdateRealmInfo(System.String, System.String)
UpdateRealmInfo(System.String)
UpdateAvailableRealmsInfo(System.Collections.Generic.IEnumerable[RealmModel])
ServerNameForCurrentRealm()
NeedToRefreshRealms(System.Collections.Generic.IEnumerable[RealmModel])
UpdateProfileInfo(UserProfile)
OnCloseButtonPressed(System.Boolean)
ConfigureOtherUIDependencies()
CreateAnalyticsController()
CreateView()