private AppUserActionExecutionResult PermissionsRequired()

in dotnet/space-translate/SpaceTranslate/WebHook/SpaceTranslateWebHookHandler.HandleMenuAction.cs [148:172]


    private AppUserActionExecutionResult PermissionsRequired(
        string? existingScope,
        ChannelIdentifier.ChannelIdentifierId? channelIdentifier)
    {
        // Always request the global scopes
        var permissionScopeElements = new HashSet<PermissionScopeElement>
        {
            new(PermissionContextIdentifier.Global, PermissionIdentifier.ViewMessages),
            new(PermissionContextIdentifier.Global, PermissionIdentifier.ViewChannelInfo),
            new(PermissionContextIdentifier.Global, PermissionIdentifier.ViewDirectMessages)
        };

        // For private channels, channel-specific scopes are needed
        if (channelIdentifier != null)
        {
            permissionScopeElements.Add(new(PermissionContextIdentifier.Channel(channelIdentifier.Id), PermissionIdentifier.ViewMessages));
            permissionScopeElements.Add(new(PermissionContextIdentifier.Channel(channelIdentifier.Id), PermissionIdentifier.ViewChannelInfo));
        }

        return AppUserActionExecutionResult.AuthCodeFlowRequired(
            new List<AuthCodeFlowPermissionsRequest>
            {
                new (new PermissionScope(existingScope ?? "") + PermissionScopeBuilder.FromElements(permissionScopeElements), purpose: "translate chat message")
            });
    }