suspend fun getSpaceChannelsToPickFrom()

in space-slack-sync/src/main/kotlin/org/jetbrains/spaceSlackSync/homepage/SpaceChannelsToPickForSync.kt [10:32]


    suspend fun getSpaceChannelsToPickFrom(query: String): SpaceChannelsToPickForSyncResponse {
        val storedSyncedChannelIds = db.syncedChannels
            .getByAppClientId(spaceTokenInfo.spaceAppInstance.clientId)
            .map { it.spaceChannelId }
            .toSet()

        val serverUrl = spaceTokenInfo.spaceAppInstance.spaceServer.serverUrl
        val spaceChannelsToPickForSync = userSpaceClient.chats.channels.listAllChannels(
            query = query,
            withArchived = false,
            publicOnly = true,
            batchInfo = BatchInfo("0", 40)
        ) {
            name()
            icon()
            channelId()
            access()
        }.data
            .map { SpaceChannelToPickForSync(it.name, it.channelId, it.icon?.let { icon -> "$serverUrl/d/$icon" }) }
            .filter { it.spaceChannelId !in storedSyncedChannelIds }

        return SpaceChannelsToPickForSyncResponse(spaceChannelsToPickForSync)
    }