< 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:198
Uncovered lines:26
Coverable lines:224
Total lines:414
Line coverage:88.3% (198 of 224)
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%770100%
UpdateAvailableRealmsInfo(...)0%770100%
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 ExploreV2Analytics;
 6using UnityEngine;
 7using Variables.RealmsInfo;
 8
 9/// <summary>
 10/// Main controller for the feature "Explore V2".
 11/// </summary>
 12public class ExploreV2MenuComponentController : IExploreV2MenuComponentController
 13{
 14    internal const ExploreSection DEFAULT_SECTION = ExploreSection.Explore;
 15
 16    internal const float MIN_TIME_AFTER_CLOSE_OTHER_UI_TO_OPEN_START_MENU = 0.1f;
 5817    internal readonly List<RealmRowComponentModel> currentAvailableRealms = new List<RealmRowComponentModel>();
 18    internal float chatInputHUDCloseTime = 0f;
 19    internal float controlsHUDCloseTime = 0f;
 20    internal ExploreSection currentOpenSection;
 21    internal float emotesHUDCloseTime = 0f;
 22    internal IExploreV2Analytics exploreV2Analytics;
 23    internal MouseCatcher mouseCatcher;
 24    internal IPlacesAndEventsSectionComponentController placesAndEventsSectionController;
 25    internal float playerInfoCardHUDCloseTime = 0f;
 26    private Dictionary<BaseVariable<bool>, ExploreSection> sectionsByInitVar;
 27    internal Dictionary<BaseVariable<bool>, ExploreSection> sectionsByVisiblityVar;
 28
 29    private Dictionary<ExploreSection, (BaseVariable<bool> initVar, BaseVariable<bool> visibilityVar)> sectionsVariables
 30
 31    internal IExploreV2MenuComponentView view;
 32
 17433    internal UserProfile ownUserProfile => UserProfile.GetOwnUserProfile();
 5834    internal RectTransform topMenuTooltipReference => view.currentTopMenuTooltipReference;
 5835    internal RectTransform placesAndEventsTooltipReference => view.currentPlacesAndEventsTooltipReference;
 5836    internal RectTransform backpackTooltipReference => view.currentBackpackTooltipReference;
 5837    internal RectTransform mapTooltipReference => view.currentMapTooltipReference;
 5838    internal RectTransform builderTooltipReference => view.currentBuilderTooltipReference;
 5839    internal RectTransform questTooltipReference => view.currentQuestTooltipReference;
 5840    internal RectTransform settingsTooltipReference => view.currentSettingsTooltipReference;
 5841    internal RectTransform profileCardTooltipReference => view.currentProfileCardTooltipReference;
 42
 34743    internal BaseVariable<bool> isOpen => DataStore.i.exploreV2.isOpen;
 27344    internal BaseVariable<int> currentSectionIndex => DataStore.i.exploreV2.currentSectionIndex;
 8145    internal BaseVariable<bool> profileCardIsOpen => DataStore.i.exploreV2.profileCardIsOpen;
 12046    internal BaseVariable<bool> isInitialized => DataStore.i.exploreV2.isInitialized;
 5847    internal BaseVariable<bool> isPlacesAndEventsSectionInitialized => DataStore.i.exploreV2.isPlacesAndEventsSectionIni
 6548    internal BaseVariable<bool> placesAndEventsVisible => DataStore.i.exploreV2.placesAndEventsVisible;
 6049    internal BaseVariable<bool> isAvatarEditorInitialized => DataStore.i.HUDs.isAvatarEditorInitialized;
 6550    internal BaseVariable<bool> avatarEditorVisible => DataStore.i.HUDs.avatarEditorVisible;
 6051    internal BaseVariable<bool> isNavmapInitialized => DataStore.i.HUDs.isNavMapInitialized;
 6552    internal BaseVariable<bool> navmapVisible => DataStore.i.HUDs.navmapVisible;
 6053    internal BaseVariable<bool> isBuilderInitialized => DataStore.i.builderInWorld.isInitialized;
 6554    internal BaseVariable<bool> builderVisible => DataStore.i.HUDs.builderProjectsPanelVisible;
 6055    internal BaseVariable<bool> isQuestInitialized => DataStore.i.Quests.isInitialized;
 6556    internal BaseVariable<bool> questVisible => DataStore.i.HUDs.questsPanelVisible;
 6057    internal BaseVariable<bool> isSettingsPanelInitialized => DataStore.i.settings.isInitialized;
 6558    internal BaseVariable<bool> settingsVisible => DataStore.i.settings.settingsPanelVisible;
 59
 5860    internal BaseVariable<bool> controlsVisible => DataStore.i.HUDs.controlsVisible;
 5861    internal BaseVariable<bool> emotesVisible => DataStore.i.HUDs.emotesVisible;
 5862    internal BaseVariable<bool> chatInputVisible => DataStore.i.HUDs.chatInputVisible;
 5863    internal BooleanVariable playerInfoCardVisible => CommonScriptableObjects.playerInfoCardVisibleState;
 2764    internal BaseVariable<bool> isPromoteChannelsToastVisible => DataStore.i.channels.isPromoteToastVisible;
 65
 66    public void Initialize()
 67    {
 5868        sectionsVariables = new Dictionary<ExploreSection, (BaseVariable<bool>, BaseVariable<bool>)>
 69        {
 70            { ExploreSection.Explore, (isPlacesAndEventsSectionInitialized,  placesAndEventsVisible) },
 71            { ExploreSection.Backpack, (isAvatarEditorInitialized,  avatarEditorVisible) },
 72            { ExploreSection.Map, (isNavmapInitialized,  navmapVisible) },
 73            { ExploreSection.Builder, (isBuilderInitialized,  builderVisible) },
 74            { ExploreSection.Quest, (isQuestInitialized,  questVisible) },
 75            { ExploreSection.Settings, (isSettingsPanelInitialized,  settingsVisible) },
 76        };
 75477        sectionsByInitVar = sectionsVariables.ToDictionary(pair => pair.Value.initVar, pair => pair.Key);
 75478        sectionsByVisiblityVar = sectionsVariables.ToDictionary(pair => pair.Value.visibilityVar, pair => pair.Key);
 79
 5880        mouseCatcher = SceneReferences.i?.mouseCatcher;
 5881        exploreV2Analytics = CreateAnalyticsController();
 5882        view = CreateView();
 5883        SetVisibility(false);
 84
 5885        DataStore.i.realm.playerRealm.OnChange += UpdateRealmInfo;
 5886        UpdateRealmInfo(DataStore.i.realm.playerRealm.Get(), null);
 87
 5888        DataStore.i.realm.realmsInfo.OnSet += UpdateAvailableRealmsInfo;
 5889        UpdateAvailableRealmsInfo(DataStore.i.realm.realmsInfo.Get());
 90
 5891        ownUserProfile.OnUpdate += UpdateProfileInfo;
 5892        UpdateProfileInfo(ownUserProfile);
 5893        view.currentProfileCard.onClick?.AddListener(() => { profileCardIsOpen.Set(!profileCardIsOpen.Get()); });
 5894        view.currentRealmViewer.onLogoClick?.AddListener(view.ShowRealmSelectorModal);
 5895        view.OnCloseButtonPressed += OnCloseButtonPressed;
 5896        view.OnAfterShowAnimation += OnAfterShowAnimation;
 97
 5898        DataStore.i.exploreV2.topMenuTooltipReference.Set(topMenuTooltipReference);
 5899        DataStore.i.exploreV2.placesAndEventsTooltipReference.Set(placesAndEventsTooltipReference);
 58100        DataStore.i.exploreV2.backpackTooltipReference.Set(backpackTooltipReference);
 58101        DataStore.i.exploreV2.mapTooltipReference.Set(mapTooltipReference);
 58102        DataStore.i.exploreV2.builderTooltipReference.Set(builderTooltipReference);
 58103        DataStore.i.exploreV2.questTooltipReference.Set(questTooltipReference);
 58104        DataStore.i.exploreV2.settingsTooltipReference.Set(settingsTooltipReference);
 58105        DataStore.i.exploreV2.profileCardTooltipReference.Set(profileCardTooltipReference);
 106
 58107        view.OnSectionOpen += OnSectionOpen;
 108
 58109        isOpen.OnChange += SetVisibilityOnOpenChanged;
 58110        SetVisibilityOnOpenChanged(isOpen.Get());
 111
 58112        currentSectionIndex.OnChange += CurrentSectionIndexChanged;
 58113        CurrentSectionIndexChanged(currentSectionIndex.Get(), 0);
 114
 812115        foreach (var sectionsVariables in sectionsVariables.Values)
 116        {
 348117            sectionsVariables.initVar.OnChangeWithSenderInfo += OnSectionInitializedChanged;
 348118            OnSectionInitializedChanged(sectionsVariables.initVar, sectionsVariables.initVar.Get());
 119
 348120            sectionsVariables.visibilityVar.OnChangeWithSenderInfo += OnSectionVisiblityChanged;
 348121            OnSectionVisiblityChanged(sectionsVariables.visibilityVar, sectionsVariables.visibilityVar.Get());
 122        }
 123
 58124        ConfigureOtherUIDependencies();
 125
 58126        isInitialized.Set(true);
 127
 58128        currentSectionIndex.Set((int)DEFAULT_SECTION, false);
 129
 130        //view.ConfigureEncapsulatedSection(ExploreSection.Backpack, DataStore.i.exploreV2.configureBackpackInFullscreen
 58131        view.ConfigureEncapsulatedSection(ExploreSection.Map, DataStore.i.exploreV2.configureMapInFullscreenMenu);
 58132        view.ConfigureEncapsulatedSection(ExploreSection.Builder, DataStore.i.exploreV2.configureBuilderInFullscreenMenu
 58133        view.ConfigureEncapsulatedSection(ExploreSection.Quest, DataStore.i.exploreV2.configureQuestInFullscreenMenu);
 58134        view.ConfigureEncapsulatedSection(ExploreSection.Settings, DataStore.i.exploreV2.configureSettingsInFullscreenMe
 58135    }
 136
 137    public void Dispose()
 138    {
 58139        DataStore.i.realm.playerRealm.OnChange -= UpdateRealmInfo;
 58140        DataStore.i.realm.realmsInfo.OnSet -= UpdateAvailableRealmsInfo;
 141
 58142        ownUserProfile.OnUpdate -= UpdateProfileInfo;
 58143        view?.currentProfileCard.onClick?.RemoveAllListeners();
 144
 58145        isOpen.OnChange -= SetVisibilityOnOpenChanged;
 58146        currentSectionIndex.OnChange -= CurrentSectionIndexChanged;
 147
 812148        foreach (var sectionsVariables in sectionsVariables.Values)
 149        {
 348150            sectionsVariables.initVar.OnChangeWithSenderInfo -= OnSectionInitializedChanged;
 348151            sectionsVariables.visibilityVar.OnChangeWithSenderInfo -= OnSectionVisiblityChanged;
 152        }
 153
 58154        if (placesAndEventsSectionController != null)
 155        {
 1156            placesAndEventsSectionController.OnCloseExploreV2 -= OnCloseButtonPressed;
 1157            placesAndEventsSectionController.Dispose();
 158        }
 159
 58160        if (view != null)
 161        {
 58162            view.currentProfileCard.onClick?.RemoveAllListeners();
 58163            view.currentRealmViewer.onLogoClick?.RemoveAllListeners();
 58164            view.OnCloseButtonPressed -= OnCloseButtonPressed;
 58165            view.OnAfterShowAnimation -= OnAfterShowAnimation;
 58166            view.OnSectionOpen -= OnSectionOpen;
 58167            view.Dispose();
 168        }
 58169    }
 170
 84171    public void SetVisibility(bool visible) => isOpen.Set(visible);
 172
 173    private void OnSectionInitializedChanged(BaseVariable<bool> initVar, bool initialized, bool _ = false) =>
 353174        SectionInitializedChanged(sectionsByInitVar[initVar], initialized);
 175
 176    internal void SectionInitializedChanged(ExploreSection section, bool initialized, bool _ = false)
 177    {
 363178        view.SetSectionActive(section, initialized);
 179
 363180        if (section == ExploreSection.Explore && initialized)
 0181            InitializePlacesAndEventsSection();
 363182    }
 183
 184    private void OnSectionVisiblityChanged(BaseVariable<bool> visibilityVar, bool visible, bool previous = false)
 185    {
 360186        ExploreSection section = sectionsByVisiblityVar[visibilityVar];
 360187        BaseVariable<bool> initVar = section == ExploreSection.Explore ? isInitialized : sectionsVariables[section].init
 188
 360189        if (!initVar.Get() || DataStore.i.common.isSignUpFlow.Get())
 151190            return;
 191
 209192        SetMenuTargetVisibility(sectionsByVisiblityVar[visibilityVar], visible);
 209193    }
 194
 195    internal void InitializePlacesAndEventsSection()
 196    {
 1197        if (placesAndEventsSectionController != null)
 0198            return;
 199
 1200        placesAndEventsSectionController = new PlacesAndEventsSectionComponentController(view.currentPlacesAndEventsSect
 1201        placesAndEventsSectionController.OnCloseExploreV2 += OnCloseButtonPressed;
 1202    }
 203
 204    internal void OnSectionOpen(ExploreSection section)
 205    {
 12206        if (section != currentOpenSection)
 11207            exploreV2Analytics.SendStartMenuSectionVisibility(currentOpenSection, false);
 208
 12209        currentOpenSection = section;
 210
 12211        if (currentOpenSection == ExploreSection.Backpack)
 2212            view.ConfigureEncapsulatedSection(ExploreSection.Backpack, DataStore.i.exploreV2.configureBackpackInFullscre
 213
 168214        foreach (var visibilityVar in sectionsByVisiblityVar.Keys)
 72215            visibilityVar.Set(currentOpenSection == sectionsByVisiblityVar[visibilityVar]);
 216
 12217        profileCardIsOpen.Set(false);
 12218    }
 219
 89220    internal void SetVisibilityOnOpenChanged(bool open, bool _ = false) => SetVisibility_Internal(open);
 221
 222    internal void CurrentSectionIndexChanged(int current, int previous)
 223    {
 499224        if (DataStore.i.exploreV2.isInShowAnimationTransiton.Get())
 0225            return;
 226
 499227        if (Enum.IsDefined(typeof(ExploreSection), current))
 228        {
 409229            if (!view.IsSectionActive((ExploreSection)current))
 409230                CurrentSectionIndexChanged(current + 1, current);
 231            else
 0232                view.GoToSection((ExploreSection)current);
 0233        }
 234        else
 90235            view.GoToSection(0);
 90236    }
 237
 238    internal void SetVisibility_Internal(bool visible)
 239    {
 89240        if (view == null || DataStore.i.common.isSignUpFlow.Get())
 0241            return;
 242
 89243        if (visible)
 244        {
 27245            mouseCatcher?.UnlockCursor();
 246
 27247            if (DataStore.i.common.isTutorialRunning.Get())
 1248                view.GoToSection(DEFAULT_SECTION);
 249
 27250            isPromoteChannelsToastVisible.Set(false);
 27251        }
 252        else
 253        {
 62254            CommonScriptableObjects.isFullscreenHUDOpen.Set(false);
 255
 868256            foreach (var sectionsVariables in sectionsVariables.Values)
 372257                sectionsVariables.visibilityVar.Set(false);
 258
 62259            profileCardIsOpen.Set(false);
 260        }
 261
 89262        view.SetVisible(visible);
 89263    }
 264
 0265    internal void OnAfterShowAnimation() => CommonScriptableObjects.isFullscreenHUDOpen.Set(true);
 266
 267    internal void SetMenuTargetVisibility(ExploreSection section, bool toVisible, bool _ = false)
 268    {
 227269        if (toVisible)
 270        {
 22271            if (currentSectionIndex.Get() != (int)section)
 19272                currentSectionIndex.Set((int)section);
 273
 22274            SetSectionTargetVisibility(section, toVisible: true);
 22275            view.GoToSection(section);
 22276        }
 205277        else if (currentOpenSection == section)
 278        {
 63279            SetSectionTargetVisibility(section, toVisible: false);
 280        }
 205281    }
 282
 283    private void SetSectionTargetVisibility(ExploreSection section, bool toVisible)
 284    {
 85285        bool wasInTargetVisibility =  toVisible ^ isOpen.Get();
 286
 85287        if (wasInTargetVisibility)
 288        {
 22289            SetVisibility(toVisible);
 22290            exploreV2Analytics.SendStartMenuVisibility(toVisible, ExploreUIVisibilityMethod.FromShortcut);
 291        }
 85292        exploreV2Analytics.SendStartMenuSectionVisibility(section, toVisible);
 85293    }
 294
 295    internal void UpdateRealmInfo(CurrentRealmModel currentRealm, CurrentRealmModel previousRealm)
 296    {
 60297        if (currentRealm == null)
 58298            return;
 299
 300        // Get the name of the current realm
 2301        view.currentRealmViewer.SetRealm(currentRealm.serverName);
 2302        view.currentRealmSelectorModal.SetCurrentRealm(currentRealm.serverName);
 303
 304        // Calculate number of users in the current realm
 2305        List<RealmModel> realmList = DataStore.i.realm.realmsInfo.Get()?.ToList();
 3306        RealmModel currentRealmModel = realmList?.FirstOrDefault(r => r.serverName == currentRealm.serverName);
 2307        int realmUsers = 0;
 2308        if (currentRealmModel != null)
 1309            realmUsers = currentRealmModel.usersCount;
 310
 2311        view.currentRealmViewer.SetNumberOfUsers(realmUsers);
 2312    }
 313
 314    internal void UpdateAvailableRealmsInfo(IEnumerable<RealmModel> currentRealmList)
 315    {
 60316        if (!NeedToRefreshRealms(currentRealmList))
 58317            return;
 318
 2319        currentAvailableRealms.Clear();
 2320        CurrentRealmModel currentRealm = DataStore.i.realm.playerRealm.Get();
 321
 2322        if (currentRealmList != null)
 323        {
 12324            foreach (RealmModel realmModel in currentRealmList)
 325            {
 4326                RealmRowComponentModel realmToAdd = new RealmRowComponentModel
 327                {
 328                    name = realmModel.serverName,
 329                    players = realmModel.usersCount,
 330                    isConnected = realmModel.serverName == currentRealm?.serverName
 331                };
 332
 4333                currentAvailableRealms.Add(realmToAdd);
 334            }
 335        }
 336
 2337        view.currentRealmSelectorModal.SetAvailableRealms(currentAvailableRealms);
 2338    }
 339
 340    internal bool NeedToRefreshRealms(IEnumerable<RealmModel> newRealmList)
 341    {
 60342        if (newRealmList == null)
 0343            return true;
 344
 60345        bool needToRefresh = false;
 60346        if (newRealmList.Count() == currentAvailableRealms.Count)
 347        {
 116348            foreach (RealmModel realm in newRealmList)
 349            {
 0350                if (!currentAvailableRealms.Exists(x => x.name == realm.serverName && x.players == realm.usersCount))
 351                {
 0352                    needToRefresh = true;
 0353                    break;
 354                }
 355            }
 356        }
 357        else
 2358            needToRefresh = true;
 359
 60360        return needToRefresh;
 361    }
 362
 363    internal void UpdateProfileInfo(UserProfile profile)
 364    {
 59365        view.currentProfileCard.SetIsClaimedName(profile.hasClaimedName);
 59366        view.currentProfileCard.SetProfileName(profile.userName);
 59367        view.currentProfileCard.SetProfileAddress(profile.ethAddress);
 59368        view.currentProfileCard.SetProfilePicture(profile.face256SnapshotURL);
 59369    }
 370
 371    internal void OnCloseButtonPressed(bool fromShortcut)
 372    {
 2373        if (DataStore.i.builderInWorld.areShortcutsBlocked.Get() || !isOpen.Get() )
 0374            return;
 375
 2376        SetVisibility(false);
 2377        exploreV2Analytics.SendStartMenuVisibility(false, fromShortcut ? ExploreUIVisibilityMethod.FromShortcut : Explor
 2378    }
 379
 380    internal void ConfigureOtherUIDependencies()
 381    {
 58382        controlsHUDCloseTime = Time.realtimeSinceStartup;
 58383        controlsVisible.OnChange += (current, _) =>
 384        {
 0385            if (!current)
 0386                controlsHUDCloseTime = Time.realtimeSinceStartup;
 0387        };
 388
 58389        emotesHUDCloseTime = Time.realtimeSinceStartup;
 58390        emotesVisible.OnChange += (current, _) =>
 391        {
 0392            if (!current)
 0393                emotesHUDCloseTime = Time.realtimeSinceStartup;
 0394        };
 395
 58396        chatInputHUDCloseTime = Time.realtimeSinceStartup;
 58397        chatInputVisible.OnChange += (current, _) =>
 398        {
 0399            if (!current)
 0400                chatInputHUDCloseTime = Time.realtimeSinceStartup;
 0401        };
 402
 58403        playerInfoCardHUDCloseTime = Time.realtimeSinceStartup;
 58404        playerInfoCardVisible.OnChange += (current, _) =>
 405        {
 0406            if (!current)
 0407                playerInfoCardHUDCloseTime = Time.realtimeSinceStartup;
 0408        };
 58409    }
 410
 0411    internal virtual IExploreV2Analytics CreateAnalyticsController() => new ExploreV2Analytics.ExploreV2Analytics();
 412
 0413    protected internal virtual IExploreV2MenuComponentView CreateView() => ExploreV2MenuComponentView.Create();
 414}

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(Variables.RealmsInfo.CurrentRealmModel, Variables.RealmsInfo.CurrentRealmModel)
UpdateAvailableRealmsInfo(System.Collections.Generic.IEnumerable[RealmModel])
NeedToRefreshRealms(System.Collections.Generic.IEnumerable[RealmModel])
UpdateProfileInfo(UserProfile)
OnCloseButtonPressed(System.Boolean)
ConfigureOtherUIDependencies()
CreateAnalyticsController()
CreateView()