< 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:194
Uncovered lines:30
Coverable lines:224
Total lines:424
Line coverage:86.6% (194 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.254075%
SetVisibility_Internal(...)0%7.017093.33%
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%330100%
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;
 5118    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
 15334    internal UserProfile ownUserProfile => UserProfile.GetOwnUserProfile();
 5135    internal RectTransform topMenuTooltipReference => view.currentTopMenuTooltipReference;
 5136    internal RectTransform placesAndEventsTooltipReference => view.currentPlacesAndEventsTooltipReference;
 5137    internal RectTransform backpackTooltipReference => view.currentBackpackTooltipReference;
 5138    internal RectTransform mapTooltipReference => view.currentMapTooltipReference;
 5139    internal RectTransform questTooltipReference => view.currentQuestTooltipReference;
 5140    internal RectTransform settingsTooltipReference => view.currentSettingsTooltipReference;
 5141    internal RectTransform profileCardTooltipReference => view.currentProfileCardTooltipReference;
 42
 30143    internal BaseVariable<bool> isOpen => DataStore.i.exploreV2.isOpen;
 23544    internal BaseVariable<int> currentSectionIndex => DataStore.i.exploreV2.currentSectionIndex;
 7145    internal BaseVariable<bool> profileCardIsOpen => DataStore.i.exploreV2.profileCardIsOpen;
 10646    internal BaseVariable<bool> isInitialized => DataStore.i.exploreV2.isInitialized;
 5147    internal BaseVariable<bool> isPlacesAndEventsSectionInitialized => DataStore.i.exploreV2.isPlacesAndEventsSectionIni
 5748    internal BaseVariable<bool> placesAndEventsVisible => DataStore.i.exploreV2.placesAndEventsVisible;
 5349    internal BaseVariable<bool> isAvatarEditorInitialized => DataStore.i.HUDs.isAvatarEditorInitialized;
 5750    internal BaseVariable<bool> avatarEditorVisible => DataStore.i.HUDs.avatarEditorVisible;
 5351    internal BaseVariable<bool> isNavmapInitialized => DataStore.i.HUDs.isNavMapInitialized;
 5752    internal BaseVariable<bool> navmapVisible => DataStore.i.HUDs.navmapVisible;
 053    internal BaseVariable<bool> builderVisible => DataStore.i.HUDs.builderProjectsPanelVisible;
 5354    internal BaseVariable<bool> isQuestInitialized => DataStore.i.Quests.isInitialized;
 5755    internal BaseVariable<bool> questVisible => DataStore.i.HUDs.questsPanelVisible;
 5356    internal BaseVariable<bool> isSettingsPanelInitialized => DataStore.i.settings.isInitialized;
 5757    internal BaseVariable<bool> settingsVisible => DataStore.i.settings.settingsPanelVisible;
 58
 5159    internal BaseVariable<bool> controlsVisible => DataStore.i.HUDs.controlsVisible;
 5160    internal BaseVariable<bool> emotesVisible => DataStore.i.HUDs.emotesVisible;
 5161    internal BaseVariable<bool> chatInputVisible => DataStore.i.HUDs.chatInputVisible;
 5162    internal BooleanVariable playerInfoCardVisible => CommonScriptableObjects.playerInfoCardVisibleState;
 2363    internal BaseVariable<bool> isPromoteChannelsToastVisible => DataStore.i.channels.isPromoteToastVisible;
 64
 65    public void Initialize()
 66    {
 5167        sectionsVariables = new Dictionary<ExploreSection, (BaseVariable<bool>, BaseVariable<bool>)>
 68        {
 69            { ExploreSection.Explore, (isPlacesAndEventsSectionInitialized,  placesAndEventsVisible) },
 70            { ExploreSection.Backpack, (isAvatarEditorInitialized,  avatarEditorVisible) },
 71            { ExploreSection.Map, (isNavmapInitialized,  navmapVisible) },
 72            { ExploreSection.Quest, (isQuestInitialized,  questVisible) },
 73            { ExploreSection.Settings, (isSettingsPanelInitialized,  settingsVisible) },
 74        };
 56175        sectionsByInitVar = sectionsVariables.ToDictionary(pair => pair.Value.initVar, pair => pair.Key);
 56176        sectionsByVisiblityVar = sectionsVariables.ToDictionary(pair => pair.Value.visibilityVar, pair => pair.Key);
 77
 5178        mouseCatcher = SceneReferences.i?.mouseCatcher;
 5179        exploreV2Analytics = CreateAnalyticsController();
 5180        view = CreateView();
 5181        SetVisibility(false);
 82
 5183        DataStore.i.realm.realmName.OnChange += UpdateRealmInfo;
 5184        UpdateRealmInfo( DataStore.i.realm.realmName.Get());
 85
 5186        DataStore.i.realm.realmsInfo.OnSet += UpdateAvailableRealmsInfo;
 5187        UpdateAvailableRealmsInfo(DataStore.i.realm.realmsInfo.Get());
 88
 5189        ownUserProfile.OnUpdate += UpdateProfileInfo;
 5190        UpdateProfileInfo(ownUserProfile);
 5191        view.currentProfileCard.onClick?.AddListener(() => { profileCardIsOpen.Set(!profileCardIsOpen.Get()); });
 5192        view.currentRealmViewer.onLogoClick?.AddListener(view.ShowRealmSelectorModal);
 5193        view.OnCloseButtonPressed += OnCloseButtonPressed;
 5194        view.OnAfterShowAnimation += OnAfterShowAnimation;
 95
 5196        DataStore.i.exploreV2.topMenuTooltipReference.Set(topMenuTooltipReference);
 5197        DataStore.i.exploreV2.placesAndEventsTooltipReference.Set(placesAndEventsTooltipReference);
 5198        DataStore.i.exploreV2.backpackTooltipReference.Set(backpackTooltipReference);
 5199        DataStore.i.exploreV2.mapTooltipReference.Set(mapTooltipReference);
 51100        DataStore.i.exploreV2.questTooltipReference.Set(questTooltipReference);
 51101        DataStore.i.exploreV2.settingsTooltipReference.Set(settingsTooltipReference);
 51102        DataStore.i.exploreV2.profileCardTooltipReference.Set(profileCardTooltipReference);
 103
 51104        view.OnSectionOpen += OnSectionOpen;
 105
 51106        isOpen.OnChange += SetVisibilityOnOpenChanged;
 51107        SetVisibilityOnOpenChanged(isOpen.Get());
 108
 51109        currentSectionIndex.OnChange += CurrentSectionIndexChanged;
 51110        CurrentSectionIndexChanged(currentSectionIndex.Get(), 0);
 111
 612112        foreach (var sectionsVariables in sectionsVariables.Values)
 113        {
 255114            sectionsVariables.initVar.OnChangeWithSenderInfo += OnSectionInitializedChanged;
 255115            OnSectionInitializedChanged(sectionsVariables.initVar, sectionsVariables.initVar.Get());
 116
 255117            sectionsVariables.visibilityVar.OnChangeWithSenderInfo += OnSectionVisiblityChanged;
 255118            OnSectionVisiblityChanged(sectionsVariables.visibilityVar, sectionsVariables.visibilityVar.Get());
 119        }
 120
 51121        ConfigureOtherUIDependencies();
 122
 51123        isInitialized.Set(true);
 124
 51125        currentSectionIndex.Set((int)DEFAULT_SECTION, false);
 126
 127        //view.ConfigureEncapsulatedSection(ExploreSection.Backpack, DataStore.i.exploreV2.configureBackpackInFullscreen
 51128        view.ConfigureEncapsulatedSection(ExploreSection.Map, DataStore.i.exploreV2.configureMapInFullscreenMenu);
 51129        view.ConfigureEncapsulatedSection(ExploreSection.Quest, DataStore.i.exploreV2.configureQuestInFullscreenMenu);
 51130        view.ConfigureEncapsulatedSection(ExploreSection.Settings, DataStore.i.exploreV2.configureSettingsInFullscreenMe
 51131    }
 132
 133    public void Dispose()
 134    {
 51135        DataStore.i.realm.realmName.OnChange -= UpdateRealmInfo;
 51136        DataStore.i.realm.realmsInfo.OnSet -= UpdateAvailableRealmsInfo;
 137
 51138        ownUserProfile.OnUpdate -= UpdateProfileInfo;
 51139        view?.currentProfileCard.onClick?.RemoveAllListeners();
 140
 51141        isOpen.OnChange -= SetVisibilityOnOpenChanged;
 51142        currentSectionIndex.OnChange -= CurrentSectionIndexChanged;
 143
 612144        foreach (var sectionsVariables in sectionsVariables.Values)
 145        {
 255146            sectionsVariables.initVar.OnChangeWithSenderInfo -= OnSectionInitializedChanged;
 255147            sectionsVariables.visibilityVar.OnChangeWithSenderInfo -= OnSectionVisiblityChanged;
 148        }
 149
 51150        if (placesAndEventsSectionController != null)
 151        {
 1152            placesAndEventsSectionController.OnCloseExploreV2 -= OnCloseButtonPressed;
 1153            placesAndEventsSectionController.Dispose();
 154        }
 155
 51156        if (view != null)
 157        {
 51158            view.currentProfileCard.onClick?.RemoveAllListeners();
 51159            view.currentRealmViewer.onLogoClick?.RemoveAllListeners();
 51160            view.OnCloseButtonPressed -= OnCloseButtonPressed;
 51161            view.OnAfterShowAnimation -= OnAfterShowAnimation;
 51162            view.OnSectionOpen -= OnSectionOpen;
 51163            view.Dispose();
 164        }
 51165    }
 166
 73167    public void SetVisibility(bool visible) => isOpen.Set(visible);
 168
 169    private void OnSectionInitializedChanged(BaseVariable<bool> initVar, bool initialized, bool _ = false) =>
 259170        SectionInitializedChanged(sectionsByInitVar[initVar], initialized);
 171
 172    internal void SectionInitializedChanged(ExploreSection section, bool initialized, bool _ = false)
 173    {
 267174        view.SetSectionActive(section, initialized);
 175
 267176        if (section == ExploreSection.Explore && initialized)
 0177            InitializePlacesAndEventsSection();
 267178    }
 179
 180    private void OnSectionVisiblityChanged(BaseVariable<bool> visibilityVar, bool visible, bool previous = false)
 181    {
 265182        ExploreSection section = sectionsByVisiblityVar[visibilityVar];
 265183        BaseVariable<bool> initVar = section == ExploreSection.Explore ? isInitialized : sectionsVariables[section].init
 184
 265185        if (!initVar.Get() || DataStore.i.common.isSignUpFlow.Get())
 120186            return;
 187
 145188        SetMenuTargetVisibility(sectionsByVisiblityVar[visibilityVar], visible);
 145189    }
 190
 191    internal void InitializePlacesAndEventsSection()
 192    {
 1193        if (placesAndEventsSectionController != null)
 0194            return;
 195
 1196        placesAndEventsSectionController = new PlacesAndEventsSectionComponentController(view.currentPlacesAndEventsSect
 1197        placesAndEventsSectionController.OnCloseExploreV2 += OnCloseButtonPressed;
 1198    }
 199
 200    internal void OnSectionOpen(ExploreSection section)
 201    {
 10202        if (section != currentOpenSection)
 9203            exploreV2Analytics.SendStartMenuSectionVisibility(currentOpenSection, false);
 204
 10205        currentOpenSection = section;
 206
 10207        if (currentOpenSection == ExploreSection.Backpack)
 2208            view.ConfigureEncapsulatedSection(ExploreSection.Backpack, DataStore.i.exploreV2.configureBackpackInFullscre
 209
 120210        foreach (var visibilityVar in sectionsByVisiblityVar.Keys)
 50211            visibilityVar.Set(currentOpenSection == sectionsByVisiblityVar[visibilityVar]);
 212
 10213        profileCardIsOpen.Set(false);
 10214    }
 215
 78216    internal void SetVisibilityOnOpenChanged(bool open, bool _ = false) => SetVisibility_Internal(open);
 217
 218    internal void CurrentSectionIndexChanged(int current, int previous)
 219    {
 346220        if (DataStore.i.exploreV2.isInShowAnimationTransiton.Get())
 0221            return;
 222
 346223        if (Enum.IsDefined(typeof(ExploreSection), current))
 224        {
 274225            if (!view.IsSectionActive((ExploreSection)current))
 274226                CurrentSectionIndexChanged(current + 1, current);
 227            else
 0228                view.GoToSection((ExploreSection)current);
 229        }
 230        else
 72231            view.GoToSection(0);
 72232    }
 233
 234    internal void SetVisibility_Internal(bool visible)
 235    {
 78236        if (view == null || DataStore.i.common.isSignUpFlow.Get())
 0237            return;
 238
 78239        if (visible)
 240        {
 23241            mouseCatcher?.UnlockCursor();
 242
 23243            if (DataStore.i.common.isTutorialRunning.Get())
 1244                view.GoToSection(DEFAULT_SECTION);
 245
 23246            isPromoteChannelsToastVisible.Set(false);
 247        }
 248        else
 249        {
 55250            CommonScriptableObjects.isFullscreenHUDOpen.Set(false);
 251
 660252            foreach (var sectionsVariables in sectionsVariables.Values)
 275253                sectionsVariables.visibilityVar.Set(false);
 254
 55255            profileCardIsOpen.Set(false);
 256        }
 257
 78258        view.SetVisible(visible);
 78259    }
 260
 0261    internal void OnAfterShowAnimation() => CommonScriptableObjects.isFullscreenHUDOpen.Set(true);
 262
 263    internal void SetMenuTargetVisibility(ExploreSection section, bool toVisible, bool _ = false)
 264    {
 160265        if (toVisible)
 266        {
 18267            if (currentSectionIndex.Get() != (int)section)
 13268                currentSectionIndex.Set((int)section);
 269
 18270            SetSectionTargetVisibility(section, toVisible: true);
 18271            view.GoToSection(section);
 272        }
 142273        else if (currentOpenSection == section)
 274        {
 55275            SetSectionTargetVisibility(section, toVisible: false);
 276        }
 142277    }
 278
 279    private void SetSectionTargetVisibility(ExploreSection section, bool toVisible)
 280    {
 73281        bool wasInTargetVisibility =  toVisible ^ isOpen.Get();
 282
 73283        if (wasInTargetVisibility)
 284        {
 18285            SetVisibility(toVisible);
 18286            exploreV2Analytics.SendStartMenuVisibility(toVisible, ExploreUIVisibilityMethod.FromShortcut);
 287        }
 73288        exploreV2Analytics.SendStartMenuSectionVisibility(section, toVisible);
 73289    }
 290
 291    private void UpdateRealmInfo(string current, string previous)
 292    {
 0293        if (string.IsNullOrEmpty(current))
 0294            return;
 295
 0296        UpdateRealmInfo(current);
 0297    }
 298
 299    internal void UpdateRealmInfo(string realmName)
 300    {
 52301        if (string.IsNullOrEmpty(realmName))
 51302            return;
 303
 304        // Get the name of the current realm
 1305        view.currentRealmViewer.SetRealm(realmName);
 1306        view.currentRealmSelectorModal.SetCurrentRealm(realmName);
 307
 308        // Calculate number of users in the current realm
 1309        List<RealmModel> realmList = DataStore.i.realm.realmsInfo.Get()?.ToList();
 2310        RealmModel currentRealmModel = realmList?.FirstOrDefault(r => r.serverName == realmName);
 1311        int realmUsers = 0;
 1312        if (currentRealmModel != null)
 1313            realmUsers = currentRealmModel.usersCount;
 314
 1315        view.currentRealmViewer.SetNumberOfUsers(realmUsers);
 1316    }
 317
 318    internal void UpdateAvailableRealmsInfo(IEnumerable<RealmModel> currentRealmList)
 319    {
 53320        List<RealmModel> realmList = currentRealmList?.ToList();
 321
 53322        if (!NeedToRefreshRealms(realmList))
 51323            return;
 324
 2325        currentAvailableRealms.Clear();
 326
 2327        if (realmList != null)
 328        {
 2329            string serverName = ServerNameForCurrentRealm();
 12330            foreach (RealmModel realmModel in realmList)
 331            {
 4332                currentAvailableRealms.Add(new RealmRowComponentModel
 333                {
 334                    name = realmModel.serverName,
 335                    players = realmModel.usersCount,
 336                    isConnected = realmModel.serverName == serverName
 337                });
 338            }
 339        }
 340
 2341        view.currentRealmSelectorModal.SetAvailableRealms(currentAvailableRealms);
 2342    }
 343
 344    private string ServerNameForCurrentRealm()
 345    {
 2346        if (DataStore.i.realm.playerRealm.Get() != null)
 1347            return DataStore.i.realm.playerRealm.Get().serverName;
 1348        if(DataStore.i.realm.playerRealmAboutConfiguration.Get() != null)
 0349            return DataStore.i.realm.playerRealmAboutConfiguration.Get().RealmName;
 1350        return "";
 351    }
 352
 353    internal bool NeedToRefreshRealms(IEnumerable<RealmModel> newRealmList)
 354    {
 53355        if (newRealmList == null)
 0356            return true;
 357
 53358        bool needToRefresh = false;
 53359        if (newRealmList.Count() == currentAvailableRealms.Count)
 360        {
 102361            foreach (RealmModel realm in newRealmList)
 362            {
 0363                if (!currentAvailableRealms.Exists(x => x.name == realm.serverName && x.players == realm.usersCount))
 364                {
 0365                    needToRefresh = true;
 0366                    break;
 367                }
 368            }
 369        }
 370        else
 2371            needToRefresh = true;
 372
 53373        return needToRefresh;
 374    }
 375
 376    internal void UpdateProfileInfo(UserProfile profile)
 377    {
 52378        view.currentProfileCard.SetIsClaimedName(profile.hasClaimedName);
 52379        view.currentProfileCard.SetProfileName(profile.userName);
 52380        view.currentProfileCard.SetProfileAddress(profile.ethAddress);
 52381        view.currentProfileCard.SetProfilePicture(profile.face256SnapshotURL);
 52382    }
 383
 384    internal void OnCloseButtonPressed(bool fromShortcut)
 385    {
 2386        SetVisibility(false);
 2387        exploreV2Analytics.SendStartMenuVisibility(false, fromShortcut ? ExploreUIVisibilityMethod.FromShortcut : Explor
 2388    }
 389
 390    internal void ConfigureOtherUIDependencies()
 391    {
 51392        controlsHUDCloseTime = Time.realtimeSinceStartup;
 51393        controlsVisible.OnChange += (current, _) =>
 394        {
 0395            if (!current)
 0396                controlsHUDCloseTime = Time.realtimeSinceStartup;
 0397        };
 398
 51399        emotesHUDCloseTime = Time.realtimeSinceStartup;
 51400        emotesVisible.OnChange += (current, _) =>
 401        {
 0402            if (!current)
 0403                emotesHUDCloseTime = Time.realtimeSinceStartup;
 0404        };
 405
 51406        chatInputHUDCloseTime = Time.realtimeSinceStartup;
 51407        chatInputVisible.OnChange += (current, _) =>
 408        {
 0409            if (!current)
 0410                chatInputHUDCloseTime = Time.realtimeSinceStartup;
 0411        };
 412
 51413        playerInfoCardHUDCloseTime = Time.realtimeSinceStartup;
 51414        playerInfoCardVisible.OnChange += (current, _) =>
 415        {
 0416            if (!current)
 0417                playerInfoCardHUDCloseTime = Time.realtimeSinceStartup;
 0418        };
 51419    }
 420
 0421    internal virtual IExploreV2Analytics CreateAnalyticsController() => new ExploreV2Analytics.ExploreV2Analytics();
 422
 0423    protected internal virtual IExploreV2MenuComponentView CreateView() => ExploreV2MenuComponentView.Create();
 424}

Methods/Properties

ExploreV2MenuComponentController()
ownUserProfile()
topMenuTooltipReference()
placesAndEventsTooltipReference()
backpackTooltipReference()
mapTooltipReference()
questTooltipReference()
settingsTooltipReference()
profileCardTooltipReference()
isOpen()
currentSectionIndex()
profileCardIsOpen()
isInitialized()
isPlacesAndEventsSectionInitialized()
placesAndEventsVisible()
isAvatarEditorInitialized()
avatarEditorVisible()
isNavmapInitialized()
navmapVisible()
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()