< Summary

Class:NewProjectFlowController
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/NewProject/NewProjectFlowController.cs
Covered lines:33
Uncovered lines:13
Coverable lines:46
Total lines:123
Line coverage:71.7% (33 of 46)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
NewProjectFlowController()0%2100%
NewProjectFlowController(...)0%110100%
Initilizate(...)0%110100%
Hide()0%2100%
SetCreatingProjectStatusToFalse()0%2100%
Dispose()0%110100%
IsActive()0%2100%
NewProject()0%2.032080%
SetTitleAndDescription(...)0%110100%
SetRowsAndColumns(...)0%110100%
NewProjectCreated()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/NewProject/NewProjectFlowController.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using System.Collections.Generic;
 4using DCL;
 5using DCL.Builder;
 6using DCL.Configuration;
 7using UnityEngine;
 8using Object = UnityEngine.Object;
 9
 10public interface INewProjectFlowController
 11{
 12    /// <summary>
 13    /// When a new project is created
 14    /// </summary>
 15    event Action<ProjectData> OnNewProjectCrated;
 16
 17    /// <summary>
 18    /// This will create a new project data and show the view to create it
 19    /// </summary>
 20    void NewProject();
 21
 22    /// <summary>
 23    /// Hide the view
 24    /// </summary>
 25    void Hide();
 26
 27    void Dispose();
 28
 29    /// <summary>
 30    /// This will return true if the new project windows is active
 31    /// </summary>
 32    /// <returns></returns>
 33    bool IsActive();
 34}
 35
 36public class NewProjectFlowController : INewProjectFlowController
 37{
 38    public const string VIEW_PATH = "NewProject/NewProjectFlowView";
 39
 40    public event Action<ProjectData> OnNewProjectCrated;
 41
 42    internal ProjectData projectData;
 43
 44    internal INewProjectFlowView view;
 45
 046    public NewProjectFlowController()
 47    {
 048        var prefab = Resources.Load<NewProjectFlowView>(VIEW_PATH);
 049        var instantiateView = Object.Instantiate(prefab);
 050        Initilizate(instantiateView);
 051    }
 52
 1253    public NewProjectFlowController(INewProjectFlowView view) { Initilizate(view); }
 54
 55    private void Initilizate(INewProjectFlowView view)
 56    {
 457        this.view = view;
 458        view.OnTittleAndDescriptionSet += SetTitleAndDescription;
 459        view.OnSizeSet += SetRowsAndColumns;
 460        view.OnViewHide += SetCreatingProjectStatusToFalse;
 461    }
 62
 63    public void Hide()
 64    {
 065        view.Hide();
 066        DataStore.i.builderInWorld.areShortcutsBlocked.Set(false);
 067    }
 68
 69    public void SetCreatingProjectStatusToFalse()
 70    {
 071        DataStore.i.builderInWorld.areShortcutsBlocked.Set(false);
 072    }
 73
 74    public void Dispose()
 75    {
 476        view.OnTittleAndDescriptionSet -= SetTitleAndDescription;
 477        view.OnSizeSet -= SetRowsAndColumns;
 478        view.OnViewHide -= SetCreatingProjectStatusToFalse;
 479        view.Dispose();
 480    }
 81
 082    public bool IsActive() { return view.IsActive(); }
 83
 84    public void NewProject()
 85    {
 486        UserProfile userProfile = UserProfile.GetOwnUserProfile();
 487        if (userProfile.isGuest)
 88        {
 089            BIWUtils.ShowGenericNotification(BIWSettings.GUEST_CANT_USE_BUILDER);
 090            return;
 91        }
 92
 493        projectData = new ProjectData();
 494        projectData.id = Guid.NewGuid().ToString();
 495        projectData.eth_address = UserProfile.GetOwnUserProfile().ethAddress;
 496        DataStore.i.builderInWorld.areShortcutsBlocked.Set(true);
 497        view.ShowNewProjectTitleAndDescrition();
 498    }
 99
 100    public void SetTitleAndDescription(string title, string description)
 101    {
 1102        projectData.title = title;
 1103        projectData.description = description;
 1104    }
 105
 106    public void SetRowsAndColumns(int columns, int rows)
 107    {
 1108        projectData.rows = rows;
 1109        projectData.cols = columns;
 110
 1111        NewProjectCreated();
 1112    }
 113
 114    internal void NewProjectCreated()
 115    {
 2116        projectData.created_at = DateTime.UtcNow;
 2117        projectData.updated_at = DateTime.UtcNow;
 2118        DataStore.i.builderInWorld.areShortcutsBlocked.Set(false);
 2119        view.Reset();
 2120        OnNewProjectCrated?.Invoke(projectData);
 2121        view.Hide();
 2122    }
 123}