Skip to content
This repository has been archived by the owner on Jul 25, 2024. It is now read-only.

Dominaezzz/matrix-kt

Repository files navigation

GitHub license

Matrix in Kotlin

Kotlin multiplatform libraries for Matrix.

  • Http Client
  • olm
  • SDK

Join the support room at #matrix-kt:matrix.org.

Supported platforms

  • JVM
  • Android
  • JavaScript
  • LinuxX64
  • MingwX64
  • MacosX64
  • IosArm32
  • IosArm64
  • IosX64

Usage

repositories {
    mavenCentral()
}

dependencies {
    implementation("io.github.dominaezzz.matrixkt:client:$version")
    implementation("io.github.dominaezzz.matrixkt:olm:$version")
}

Sample

Client

val client = HttpClient(Apache) {
    MatrixConfig(baseUrl = Url("matrix.org"))
}
val accessToken = "Super secure Token"

val roomId = "!QtykxKocfZaZOUrTwp:matrix.org"

val response = client.rpc(SendMessage(
    SendMessage.Url(roomId, "m.room.message", "nonce"),
    buildJsonObject {
        put("msgtype", "m.text")
        put("body", "Hello World!")
    }
), accessToken)
val eventId = response.eventId

client.rpc(RedactEvent(
    RedactEvent.Url(roomId, eventId, "nonce2"),
    RedactEvent.Body(reason = "Was a bot!")
), accessToken)

Olm

val account = Account()
upload(account.identityKeys)
val signature = account.sign("""{"key":"super secure key for security things"}""")

val session = Session.createInboundSession(account, "PREKEY message")
val message = session.decrypt(Message.PreKey("oun02024f=ocnaowincd;53tnv024ok/7u"))

session.clear()
account.clear()

JS

Javascript has a special prerequisites. Before being able to use the matrix-kt lib you need to initiate the olm library.

require("@matrix-org/olm").init()

Please read the olm documentation for further instructions on initiating the olm library.