| | 1 | | using Cysharp.Threading.Tasks; |
| | 2 | | using DCL; |
| | 3 | | using DCL.Browser; |
| | 4 | | using DCL.Providers; |
| | 5 | | using DCLServices.SubscriptionsAPIService; |
| | 6 | | using SignupHUD; |
| | 7 | |
|
| | 8 | | namespace DCLPlugins.SignupHUDPlugin |
| | 9 | | { |
| | 10 | | public class SignupHUDPlugin : IPlugin |
| | 11 | | { |
| | 12 | | private const string NEW_TOS_AND_EMAIL_SUBSCRIPTION_FF = "new_terms_of_service_and_email_subscription"; |
| | 13 | | private const string SIGNUP_HUD = "SignupHUD"; |
| | 14 | | private const string SIGNUP_HUD_V2 = "SignupHUDV2"; |
| | 15 | |
|
| 0 | 16 | | private BaseVariable<FeatureFlag> featureFlags => DataStore.i.featureFlags.flags; |
| | 17 | |
|
| | 18 | | private SignupHUDController controller; |
| | 19 | |
|
| 0 | 20 | | public SignupHUDPlugin() |
| | 21 | | { |
| 0 | 22 | | Initialize().Forget(); |
| 0 | 23 | | } |
| | 24 | |
|
| | 25 | | private async UniTaskVoid Initialize() |
| | 26 | | { |
| 0 | 27 | | if (!featureFlags.Get().IsInitialized) |
| 0 | 28 | | featureFlags.OnChange += OnFeatureFlagsChanged; |
| | 29 | | else |
| 0 | 30 | | OnFeatureFlagsChanged(featureFlags.Get()); |
| 0 | 31 | | } |
| | 32 | |
|
| | 33 | | private void OnFeatureFlagsChanged(FeatureFlag current, FeatureFlag _ = null) |
| | 34 | | { |
| | 35 | | async UniTaskVoid InitializeController() |
| | 36 | | { |
| 0 | 37 | | var assetsProvider = DCL.Environment.i.platform.serviceLocator.Get<IAddressableResourceProvider>(); |
| 0 | 38 | | var analytics = DCL.Environment.i.platform.serviceProviders.analytics; |
| 0 | 39 | | var loadingScreenDataStore = DataStore.i.Get<DataStore_LoadingScreen>(); |
| 0 | 40 | | var hudsDataStore = DataStore.i.HUDs; |
| 0 | 41 | | var featureFlagDataStore = DataStore.i.Get<DataStore_FeatureFlag>(); |
| 0 | 42 | | var backpackDataStore = DataStore.i.Get<DataStore_BackpackV2>(); |
| 0 | 43 | | var commonDataStore = DataStore.i.Get<DataStore_Common>(); |
| 0 | 44 | | var browserBridge = new WebInterfaceBrowserBridge(); |
| 0 | 45 | | var subscriptionsAPIService = Environment.i.serviceLocator.Get<ISubscriptionsAPIService>(); |
| 0 | 46 | | var userProfileWebInterfaceBridge = new UserProfileWebInterfaceBridge(); |
| | 47 | |
|
| 0 | 48 | | bool isNewTermsOfServiceAndEmailSubscriptionEnabled = current.IsFeatureEnabled(NEW_TOS_AND_EMAIL_SUBSCRI |
| 0 | 49 | | var view = await assetsProvider.Instantiate<ISignupHUDView>( |
| | 50 | | isNewTermsOfServiceAndEmailSubscriptionEnabled ? SIGNUP_HUD_V2 : SIGNUP_HUD, |
| | 51 | | $"_{(isNewTermsOfServiceAndEmailSubscriptionEnabled ? SIGNUP_HUD_V2 : SIGNUP_HUD)}"); |
| | 52 | |
|
| 0 | 53 | | controller = new SignupHUDController( |
| | 54 | | analytics, |
| | 55 | | view, |
| | 56 | | loadingScreenDataStore, |
| | 57 | | hudsDataStore, |
| | 58 | | featureFlagDataStore, |
| | 59 | | backpackDataStore, |
| | 60 | | commonDataStore, |
| | 61 | | browserBridge, |
| | 62 | | subscriptionsAPIService); |
| | 63 | |
|
| 0 | 64 | | controller.Initialize(); |
| 0 | 65 | | } |
| | 66 | |
|
| 0 | 67 | | featureFlags.OnChange -= OnFeatureFlagsChanged; |
| 0 | 68 | | InitializeController().Forget(); |
| 0 | 69 | | } |
| | 70 | |
|
| | 71 | | public void Dispose() |
| | 72 | | { |
| 0 | 73 | | featureFlags.OnChange -= OnFeatureFlagsChanged; |
| 0 | 74 | | controller?.Dispose(); |
| 0 | 75 | | } |
| | 76 | | } |
| | 77 | | } |