diff --git a/Explorer/Assets/DCL/Communities/CommunitiesDataProvider/CommunitiesDataProvider.cs b/Explorer/Assets/DCL/Communities/CommunitiesDataProvider/CommunitiesDataProvider.cs index c85565a2a47..e74ee7a7005 100644 --- a/Explorer/Assets/DCL/Communities/CommunitiesDataProvider/CommunitiesDataProvider.cs +++ b/Explorer/Assets/DCL/Communities/CommunitiesDataProvider/CommunitiesDataProvider.cs @@ -2,6 +2,7 @@ using DCL.Communities.CommunitiesDataProvider.DTOs; using DCL.Diagnostics; using DCL.Multiplayer.Connections.DecentralandUrls; +using DCL.PrivateWorlds; using DCL.Utilities.Extensions; using DCL.Web3.Identities; using DCL.WebRequests; @@ -15,7 +16,7 @@ namespace DCL.Communities.CommunitiesDataProvider { - public class CommunitiesDataProvider + public class CommunitiesDataProvider : ICommunityMembershipChecker { public event Action CommunityCreated; public event Action CommunityUpdated; @@ -62,6 +63,12 @@ public async UniTask GetCommunityAsync(string communityId, return response; } + public async UniTask IsMemberOfCommunityAsync(string communityId, CancellationToken ct) + { + GetCommunityResponse response = await GetCommunityAsync(communityId, ct); + return response.data.role != CommunityMemberRole.none; + } + public async UniTask GetUserCommunitiesAsync(string name, bool onlyMemberOf, int pageNumber, int elementsPerPage, CancellationToken ct, bool includeRequestsReceivedPerCommunity = false, bool isStreaming = false) { var url = $"{communitiesBaseUrl}?search={name}&onlyMemberOf={onlyMemberOf.ToString().ToLower()}&offset={(pageNumber * elementsPerPage) - elementsPerPage}&limit={elementsPerPage}"; diff --git a/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/CommunityMembershipCheckerAdapter.cs b/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/CommunityMembershipCheckerAdapter.cs deleted file mode 100644 index 3db1f7d6478..00000000000 --- a/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/CommunityMembershipCheckerAdapter.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Cysharp.Threading.Tasks; -using DCL.Communities.CommunitiesDataProvider; -using DCL.Communities.CommunitiesDataProvider.DTOs; -using DCL.PrivateWorlds; -using System.Threading; - -namespace Global.Dynamic -{ - /// - /// Avoid DCL.PrivateWorlds referencing DCL.Social (cyclic dependency). - /// - public class CommunityMembershipCheckerAdapter : ICommunityMembershipChecker - { - private readonly CommunitiesDataProvider communitiesDataProvider; - - public CommunityMembershipCheckerAdapter(CommunitiesDataProvider communitiesDataProvider) - { - this.communitiesDataProvider = communitiesDataProvider; - } - - public async UniTask IsMemberOfCommunityAsync(string communityId, CancellationToken ct) - { - var response = await communitiesDataProvider.GetCommunityAsync(communityId, ct); - return response.data.role != CommunityMemberRole.none; - } - } -} diff --git a/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/CommunityMembershipCheckerAdapter.cs.meta b/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/CommunityMembershipCheckerAdapter.cs.meta deleted file mode 100644 index 389874cb5a8..00000000000 --- a/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/CommunityMembershipCheckerAdapter.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 6dcaff4609b5a7b4589fc94773ef9e98 \ No newline at end of file diff --git a/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/DynamicWorldContainer.cs b/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/DynamicWorldContainer.cs index 4601c686c7b..68f44ec2a48 100644 --- a/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/DynamicWorldContainer.cs +++ b/Explorer/Assets/DCL/Infrastructure/Global/Dynamic/DynamicWorldContainer.cs @@ -369,11 +369,10 @@ static IMultiPool MultiPoolFactory() => IPendingTransferService pendingTransferService = new PendingTransferService(giftingPersistence); IAvatarEquippedStatusProvider equippedStatusProvider = new AvatarEquippedStatusProvider(selfProfile); var communitiesDataProvider = new CommunitiesDataProvider(staticContainer.WebRequestsContainer.WebRequestController, bootstrapContainer.DecentralandUrlsSource, identityCache); - var communityMembershipChecker = new CommunityMembershipCheckerAdapter(communitiesDataProvider); IWorldPermissionsService worldPermissionsService = new WorldPermissionsService(staticContainer.WebRequestsContainer.WebRequestController, bootstrapContainer.DecentralandUrlsSource, identityCache, - communityMembershipChecker); + communitiesDataProvider); IEmoteProvider emoteProvider = new ApplicationParamsEmoteProvider(appArgs, new EcsEmoteProvider(globalWorld, identityCache), builderDTOsURL.Value); diff --git a/Explorer/Assets/DCL/PluginSystem/DCL.Plugins.asmdef b/Explorer/Assets/DCL/PluginSystem/DCL.Plugins.asmdef index 66cdba732e4..835de714a23 100644 --- a/Explorer/Assets/DCL/PluginSystem/DCL.Plugins.asmdef +++ b/Explorer/Assets/DCL/PluginSystem/DCL.Plugins.asmdef @@ -132,7 +132,6 @@ "GUID:92920c790fc0443e9a7ec2f7d1e5308f", "GUID:4fd6538c1c56b409fb53fdf0183170ec", "GUID:c9a2684b0a08c4770a369d035cb74141", - "GUID:f8127c6ac263abf468221dcbccbde182", "GUID:d0fdd32139c48634e9a421636d17ce04", "GUID:b3ea857cc09201a4fb44cae9ca69de08", "GUID:9a1625cbfe83d3842a7b140fc34eabb2", diff --git a/Explorer/Assets/DCL/PrivateWorlds/DCL.PrivateWorlds.asmdef b/Explorer/Assets/DCL/PrivateWorlds/DCL.PrivateWorlds.asmdef deleted file mode 100644 index 341b9346cac..00000000000 --- a/Explorer/Assets/DCL/PrivateWorlds/DCL.PrivateWorlds.asmdef +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "DCL.PrivateWorlds", - "rootNamespace": "", - "references": [ - "GUID:f51ebe6a0ceec4240a699833d6309b23", - "GUID:fa7b3fdbb04d67549916da7bd2af58ab", - "GUID:7175400a68914a45acecc9fb068de3b8", - "GUID:5ab29fa8ae5769b49ab29e390caca7a4", - "GUID:45f6fff651a0a514f8edfdaf9cce45af", - "GUID:6055be8ebefd69e48b49212b09b47b2f", - "GUID:ac3295688c7c22745a96e6ac34718181", - "GUID:7c80dc1d35d179b4eab830deeead3c24", - "GUID:e25ef972de004615a22937e739de2def", - "GUID:e169fa6683c924c7e99a85981a91d953", - "GUID:e0eedfa2deb9406daf86fd8368728e39", - "GUID:809870cbfd80a7b46bcf72b178ab210b", - "GUID:702f733b4deb246808c6ce84d93b5c9c" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": true, - "precompiledReferences": [ - "Newtonsoft.Json.dll" - ], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Explorer/Assets/DCL/PrivateWorlds/DCL.PrivateWorlds.asmdef.meta b/Explorer/Assets/DCL/PrivateWorlds/DCL.PrivateWorlds.asmdef.meta deleted file mode 100644 index abbd240676f..00000000000 --- a/Explorer/Assets/DCL/PrivateWorlds/DCL.PrivateWorlds.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f8127c6ac263abf468221dcbccbde182 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Explorer/Assets/DCL/RealmNavigation/DCL.RealmNavigation.asmdef b/Explorer/Assets/DCL/RealmNavigation/DCL.RealmNavigation.asmdef index 48306e9a4c4..728891fd945 100644 --- a/Explorer/Assets/DCL/RealmNavigation/DCL.RealmNavigation.asmdef +++ b/Explorer/Assets/DCL/RealmNavigation/DCL.RealmNavigation.asmdef @@ -26,8 +26,14 @@ "GUID:875a5d5129614170bd769ed012c2eb3d", "GUID:286980af24684da6acc1caa413039811", "GUID:006c0e0a70294dbba8a4cbcfb77e1f7d", - "GUID:f8127c6ac263abf468221dcbccbde182", - "GUID:7c80dc1d35d179b4eab830deeead3c24" + "GUID:7c80dc1d35d179b4eab830deeead3c24", + "GUID:5ab29fa8ae5769b49ab29e390caca7a4", + "GUID:45f6fff651a0a514f8edfdaf9cce45af", + "GUID:6055be8ebefd69e48b49212b09b47b2f", + "GUID:ac3295688c7c22745a96e6ac34718181", + "GUID:e169fa6683c924c7e99a85981a91d953", + "GUID:809870cbfd80a7b46bcf72b178ab210b", + "GUID:702f733b4deb246808c6ce84d93b5c9c" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldEvents.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorldEvents.cs similarity index 70% rename from Explorer/Assets/DCL/PrivateWorlds/PrivateWorldEvents.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorldEvents.cs index 7ec1489b1cb..dc705a189a5 100644 --- a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldEvents.cs +++ b/Explorer/Assets/DCL/RealmNavigation/PrivateWorldEvents.cs @@ -12,7 +12,12 @@ public enum WorldAccessResult } public interface IWorldAccessGate - { + { UniTask CheckAccessAsync(string worldName, string? ownerAddress, CancellationToken ct); } + + public interface ICommunityMembershipChecker + { + UniTask IsMemberOfCommunityAsync(string communityId, CancellationToken ct); + } } diff --git a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldEvents.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorldEvents.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/PrivateWorldEvents.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorldEvents.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldAccessHandler.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldAccessHandler.cs similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/PrivateWorldAccessHandler.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldAccessHandler.cs diff --git a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldAccessHandler.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldAccessHandler.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/PrivateWorldAccessHandler.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldAccessHandler.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldPermissionGuard.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldPermissionGuard.cs similarity index 97% rename from Explorer/Assets/DCL/PrivateWorlds/PrivateWorldPermissionGuard.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldPermissionGuard.cs index 2f6f3cec637..8f42a6b9725 100644 --- a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldPermissionGuard.cs +++ b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldPermissionGuard.cs @@ -1,12 +1,10 @@ using Cysharp.Threading.Tasks; -using DCL.Chat; using DCL.Chat.History; using DCL.Diagnostics; using DCL.Multiplayer.Connections.RoomHubs; using ECS; using ECS.SceneLifeCycle.Realm; using DCL.LiveKit.Public; -using LiveKit.Proto; using LiveKit.Rooms; using System; using System.Threading; @@ -102,7 +100,7 @@ private async UniTaskVoid RunPermissionCheckAsync(CancellationToken ct) private async UniTask CheckCurrentWorldAccessAndTeleportIfRevokedAsync(CancellationToken ct) { - if (ct.IsCancellationRequested || + if (ct.IsCancellationRequested || realmData.RealmType.Value is not RealmKind.World) return; @@ -113,7 +111,7 @@ private async UniTask CheckCurrentWorldAccessAndTeleportIfRevokedAsync(Cancellat WorldAccessCheckContext context = await worldPermissionsService.CheckWorldAccessAsync(worldName, ct); - if (ct.IsCancellationRequested || + if (ct.IsCancellationRequested || realmData.RealmType.Value is not RealmKind.World) return; diff --git a/Explorer/Assets/DCL/PrivateWorlds/PrivateWorldPermissionGuard.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldPermissionGuard.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/PrivateWorldPermissionGuard.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/PrivateWorldPermissionGuard.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupController.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupController.cs similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupController.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupController.cs diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupController.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupController.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupController.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupController.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupParams.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupParams.cs similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupParams.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupParams.cs diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupParams.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupParams.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupParams.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupParams.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupView.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupView.cs similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupView.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupView.cs diff --git a/Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupView.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupView.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/UI/PrivateWorldPopupView.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/UI/PrivateWorldPopupView.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/Views.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/Views.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/Views.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/Views.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab diff --git a/Explorer/Assets/DCL/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/Views/PrivateWorldsEntryPopup.prefab.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsData.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsData.cs similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsData.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsData.cs diff --git a/Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsData.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsData.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsData.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsData.cs.meta diff --git a/Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsService.cs b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsService.cs similarity index 94% rename from Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsService.cs rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsService.cs index 469af85359e..1af12bdaab6 100644 --- a/Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsService.cs +++ b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsService.cs @@ -73,18 +73,6 @@ public ValidatePasswordResult(bool success, string? errorMessage = null) public static ValidatePasswordResult Fail(string? errorMessage) => new (false, errorMessage); } - /// - /// Abstraction for checking if the current user is a member of a community. - /// Implemented by an adapter that uses CommunitiesDataProvider (avoids DCL.PrivateWorlds referencing DCL.Social). - /// - public interface ICommunityMembershipChecker - { - /// - /// Returns true if the current user is a member of the given community (role != none). - /// - UniTask IsMemberOfCommunityAsync(string communityId, CancellationToken ct); - } - /// /// Service for fetching and checking world access permissions. /// @@ -95,13 +83,13 @@ public class WorldPermissionsService : IWorldPermissionsService private readonly IWebRequestController webRequestController; private readonly IDecentralandUrlsSource urlsSource; private readonly IWeb3IdentityCache web3IdentityCache; - private readonly ICommunityMembershipChecker? communityMembershipChecker; + private readonly ICommunityMembershipChecker communityMembershipChecker; public WorldPermissionsService( IWebRequestController webRequestController, IDecentralandUrlsSource urlsSource, IWeb3IdentityCache web3IdentityCache, - ICommunityMembershipChecker? communityMembershipChecker = null) + ICommunityMembershipChecker communityMembershipChecker) { this.webRequestController = webRequestController; this.urlsSource = urlsSource; @@ -290,7 +278,7 @@ private async UniTask CheckAllowListAccessAsync(WorldAccessInfo accessInfo return true; } - if (communityMembershipChecker != null && accessInfo.AllowedCommunities.Count > 0) + if (accessInfo.AllowedCommunities.Count > 0) { var membershipChecks = new UniTask[accessInfo.AllowedCommunities.Count]; diff --git a/Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsService.cs.meta b/Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsService.cs.meta similarity index 100% rename from Explorer/Assets/DCL/PrivateWorlds/WorldPermissionsService.cs.meta rename to Explorer/Assets/DCL/RealmNavigation/PrivateWorlds/WorldPermissionsService.cs.meta diff --git a/Explorer/Assets/DCL/Social/DCL.Social.asmdef b/Explorer/Assets/DCL/Social/DCL.Social.asmdef index 2f6ba7fb469..fd78d5b1b48 100644 --- a/Explorer/Assets/DCL/Social/DCL.Social.asmdef +++ b/Explorer/Assets/DCL/Social/DCL.Social.asmdef @@ -72,7 +72,6 @@ "GUID:9b4463c7170cb485aaf17878a8b7281e", "GUID:2efe6c760f205482eb96395a31bb7036", "GUID:8ef573751495a4f88822a98a88954a0b", - "GUID:f8127c6ac263abf468221dcbccbde182", "GUID:1300820cd310d4584b09afde765bdd16", "GUID:15fc0a57446b3144c949da3e2b9737a9", "GUID:d0ec51c740809fd4680d3ea27279dca7",