Skip to content

Commit acb89e4

Browse files
committed
refactor(backup): replace ByteArray with Uint8Array for JS
Ensure compatibility with JavaScript by replacing `ByteArray` with `Uint8Array` in key backup export/import functions. Updated type handling across related classes and methods to support the new standard, maintaining seamless integration with the web platform.
1 parent 20791fd commit acb89e4

File tree

4 files changed

+12
-7
lines changed

4 files changed

+12
-7
lines changed

backup/src/jsMain/kotlin/com/wire/backup/dump/BackupExportResult.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@
1717
*/
1818
package com.wire.backup.dump
1919

20+
import org.khronos.webgl.Uint8Array
21+
2022
@JsExport
2123
public sealed class BackupExportResult {
22-
public class Success(public val bytes: ByteArray) : BackupExportResult()
24+
public class Success(
25+
public val bytes: Uint8Array
26+
) : BackupExportResult()
2327
public sealed class Failure(public val message: String) : BackupExportResult() {
2428
/**
2529
* Represents an I/O error that occurs during an export process.

backup/src/jsMain/kotlin/com/wire/backup/dump/MPBackupExporter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public actual class MPBackupExporter(
7272
when (val result = finalize(password, output)) {
7373
is ExportResult.Failure.IOError -> BackupExportResult.Failure.IOError(result.message)
7474
is ExportResult.Failure.ZipError -> BackupExportResult.Failure.ZipError(result.message)
75-
ExportResult.Success -> BackupExportResult.Success(output.readByteArray())
75+
ExportResult.Success -> BackupExportResult.Success(output.readByteArray().toUByteArray().toUInt8Array())
7676
}
7777
}
7878
}

backup/src/jsMain/kotlin/com/wire/backup/ingest/MPBackupImporter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ import kotlin.js.Promise
4242
public actual class MPBackupImporter : CommonMPBackupImporter() {
4343
private val inMemoryUnencryptedBuffer = Buffer()
4444

45-
public fun peekFileData(data: ByteArray): Promise<BackupPeekResult> = GlobalScope.promise {
45+
public fun peekFileData(data: Uint8Array): Promise<BackupPeekResult> = GlobalScope.promise {
4646
val buffer = Buffer()
47-
buffer.write(data)
47+
buffer.write(data.toUByteArray().toByteArray())
4848
peekBackup(buffer)
4949
}
5050

51-
public fun importFromFileData(data: ByteArray, passphrase: String?): Promise<BackupImportResult> = GlobalScope.promise {
51+
public fun importFromFileData(data: Uint8Array, passphrase: String?): Promise<BackupImportResult> = GlobalScope.promise {
5252
val buffer = Buffer()
53-
buffer.write(data)
53+
buffer.write(data.toUByteArray().toByteArray())
5454
importBackup(buffer, passphrase)
5555
}
5656

samples/src/jsMain/kotlin/samples/backup/BackupSamplesJs.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.wire.backup.ingest.BackupPeekResult
2222
import com.wire.backup.ingest.MPBackupImporter
2323
import com.wire.backup.ingest.isCreatedBySameUser
2424
import kotlinx.coroutines.await
25+
import org.khronos.webgl.Uint8Array
2526

2627
object BackupSamplesJs : BackupSamples() {
2728

@@ -51,7 +52,7 @@ object BackupSamplesJs : BackupSamples() {
5152
println("Backup created file. Raw binary data: $fileData")
5253
}
5354

54-
suspend fun peekBackup(data: ByteArray) {
55+
suspend fun peekBackup(data: Uint8Array) {
5556
// Peek into backup file
5657
val importer = MPBackupImporter()
5758

0 commit comments

Comments
 (0)