diff --git a/README.md b/README.md index 07b4948..a294b00 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,15 @@ Matrix Application Service for Okupa mi coche ## Launch Element with dev profile -`element-desktop --profile omc-dev` + +1. Put this text in `.config/Element-omc-dev/config.json`: + +``` +{ + "showLabsSettings": true, + "dangerously_allow_unsafe_and_insecure_passwords": true +} +``` + +2. Launch new Element instance with `element-desktop --profile omc-dev` +3. Send `/devtools` to any Element room. Enable `Developer mode` and `Show hidden events in timeline`. diff --git a/src/main/kotlin/eu/fosil/okupamicoche/Main.kt b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt index 59ddc57..9140a92 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/Main.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt @@ -1,6 +1,7 @@ package eu.fosil.okupamicoche import eu.fosil.okupamicoche.config.ConfigReader +import eu.fosil.okupamicoche.matrix.MatrixApiClient import eu.fosil.okupamicoche.matrix.createAppService import eu.fosil.okupamicoche.matrix.event.TravelEventContentSerializerMappings import eu.fosil.okupamicoche.matrix.matrixApiClient @@ -24,10 +25,10 @@ suspend fun main() { requireNotNull(config) requireNotNull(matrixApiClient) + MatrixApiClient.init() coroutineScope { launch { - val roomMainAlias = "#${config.mainRoom}:${config.homeserver.host}" val roomAliasRes = matrixApiClient.rooms.getRoomAlias(RoomAliasId(roomMainAlias)).getOrNull() if (roomAliasRes == null) { @@ -38,10 +39,14 @@ suspend fun main() { ) } else { val mainRoomId = roomAliasRes.roomId - val alreadyJoinedToMainRoom = (matrixApiClient.rooms.getJoinedRooms().getOrNull()?.filter { roomId -> + val joinedToMainRoom = (matrixApiClient.rooms.getJoinedRooms().getOrNull()?.filter { roomId -> roomId == mainRoomId }?.firstOrNull()) !== null - logger.info("alreadyJoinedToMainRoom=$alreadyJoinedToMainRoom") + logger.info("alreadyJoinedToMainRoom=$joinedToMainRoom") + + if (!joinedToMainRoom) { + matrixApiClient.rooms.joinRoom(mainRoomId) + } val roomStateRes = matrixApiClient.rooms.getState(mainRoomId).getOrNull() roomStateRes?.collect { stateEvent -> diff --git a/src/main/kotlin/eu/fosil/okupamicoche/matrix/matrixApiClient.kt b/src/main/kotlin/eu/fosil/okupamicoche/matrix/matrixApiClient.kt index c5834e9..bb9f9bb 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/matrix/matrixApiClient.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/matrix/matrixApiClient.kt @@ -22,7 +22,7 @@ val matrixApiClient = if (config == null) null else MatrixClientServerApiClient( object MatrixApiClient { var appServiceUserId: UserId? = null - init { + fun init() { requireNotNull(matrixApiClient) val ioScope = CoroutineScope(Dispatchers.IO) diff --git a/src/main/kotlin/eu/fosil/okupamicoche/usecase/travel/createTravel.kt b/src/main/kotlin/eu/fosil/okupamicoche/usecase/travel/createTravel.kt index 5919592..6faa254 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/usecase/travel/createTravel.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/usecase/travel/createTravel.kt @@ -53,6 +53,7 @@ suspend fun createTravel( private suspend fun createRoom(travelOptions: TravelOptions, driver: UserId): RoomId { requireNotNull(matrixApiClient) requireNotNull(config) + val appServiceUserId = requireNotNull(MatrixApiClient.appServiceUserId) val newRoomAliasAndName = getRoomAliasAndName(travelOptions) val initialState = Event.InitialStateEvent( @@ -62,7 +63,7 @@ private suspend fun createRoom(travelOptions: TravelOptions, driver: UserId): Ro val powerLevels = PowerLevelsEventContent( events = mapOf(Pair(TRAVEL_CREATED_STATE_EVENT_ID, 100)), users = mapOf( - Pair(MatrixApiClient.appServiceUserId!!, 100), + Pair(appServiceUserId, 100), Pair(driver, 50) ) )