< Summary

Class:QuestsPlugin
Assembly:Quests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Quests/QuestsPlugin.cs
Covered lines:0
Uncovered lines:30
Coverable lines:30
Total lines:88
Line coverage:0% (0 of 30)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:4
Method coverage:0% (0 of 4)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
QuestsPlugin(...)0%2100%
InstantiateUIs()0%1821300%
GetClientQuestsService()0%90900%
Dispose()0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Quests/QuestsPlugin.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL;
 3using DCL.Helpers;
 4using DCL.Providers;
 5using DCL.Quests;
 6using DCLServices.QuestsService;
 7using Decentraland.Quests;
 8using rpc_csharp;
 9using RPC.Transports;
 10using System.Threading;
 11using UnityEngine;
 12using WebSocketSharp;
 13
 14public class QuestsPlugin : IPlugin
 15{
 16    private const string QUEST_TRACKER_HUD = "QuestTrackerHUD";
 17    private const string QUEST_COMPLETED_HUD = "QuestCompletedHUD";
 18    private const string QUEST_STARTED_POPUP = "QuestStartedPopupHUD";
 19    private const string QUEST_LOG = "QuestLogHUD";
 20    private readonly IAddressableResourceProvider resourceProvider;
 021    private IUserProfileBridge userProfileBridge = new UserProfileWebInterfaceBridge();
 22
 23    private QuestTrackerComponentView questTrackerComponentView;
 24    private QuestCompletedComponentView questCompletedComponentView;
 25    private QuestStartedPopupComponentView questStartedPopupComponentView;
 26    private QuestLogComponentView questLogComponentView;
 27    private QuestsService questService;
 28
 29    private CancellationTokenSource cts;
 30
 031    public QuestsPlugin(IAddressableResourceProvider resourceProvider)
 32    {
 033        this.resourceProvider = resourceProvider;
 034        cts = new CancellationTokenSource();
 35
 036        InstantiateUIs(cts).Forget();
 037    }
 38
 39    private async UniTaskVoid InstantiateUIs(CancellationTokenSource cts)
 40    {
 041        questService = new QuestsService(await GetClientQuestsService(), new QuestRewardsResolver());
 042        await UniTask.SwitchToMainThread(cts.Token);
 43
 044        questTrackerComponentView = await resourceProvider.Instantiate<QuestTrackerComponentView>(QUEST_TRACKER_HUD, $"_
 045        questCompletedComponentView = await resourceProvider.Instantiate<QuestCompletedComponentView>(QUEST_COMPLETED_HU
 046        questStartedPopupComponentView = await resourceProvider.Instantiate<QuestStartedPopupComponentView>(QUEST_STARTE
 047        questLogComponentView = await resourceProvider.Instantiate<QuestLogComponentView>(QUEST_LOG, $"_{QUEST_LOG}", ca
 48
 049        questLogComponentView.gameObject.SetActive(false);
 050        DataStore.i.Quests.isInitialized.Set(true);
 51
 052        QuestsController controller = new QuestsController(
 53            questService,
 54            questTrackerComponentView,
 55            questCompletedComponentView,
 56            questStartedPopupComponentView,
 57            userProfileBridge,
 58            new DefaultPlayerPrefs(),
 59            DataStore.i,
 60            Environment.i.world.teleportController,
 61            new QuestLogController(questLogComponentView, userProfileBridge, questService),
 62            new QuestAnalyticsService(Environment.i.platform.serviceProviders.analytics));
 063    }
 64
 65    public async UniTask<ClientQuestsService> GetClientQuestsService()
 66    {
 067        var rpc = Environment.i.serviceLocator.Get<IRPC>();
 068        await rpc.EnsureRpc();
 069        var rpcSignRequest = new RPCSignRequest(rpc);
 70
 071        AuthedWebSocketClientTransport webSocketClientTransport = new AuthedWebSocketClientTransport(rpcSignRequest, "ws
 72
 73        //TODO Quest Server is not accepting the correct url and by now it needs "/". Change it as soon as QuestServer i
 074        await webSocketClientTransport.Connect("/");
 75
 076        RpcClient rpcClient = new RpcClient(webSocketClientTransport);
 077        var clientPort = await rpcClient.CreatePort("Unity_QuestsService");
 078        var module = await clientPort.LoadModule(QuestsServiceCodeGen.ServiceName);
 079        return new ClientQuestsService(module);
 080    }
 81
 82    public void Dispose()
 83    {
 084        cts?.Cancel();
 085        cts?.Dispose();
 086        cts = null;
 087    }
 88}