Skip to content

Commit e6a2853

Browse files
committed
refactor: remove mode from api
1 parent faab995 commit e6a2853

File tree

7 files changed

+12
-10
lines changed

7 files changed

+12
-10
lines changed

core/file/src/androidMain/kotlin/net/thunderbird/core/file/AndroidFileSystemManager.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ import kotlinx.io.asSource
1414
class AndroidFileSystemManager(
1515
private val contentResolver: ContentResolver,
1616
) : FileSystemManager {
17-
override fun openSink(uriString: String, mode: String): RawSink? {
17+
override fun openSink(uriString: String): RawSink? {
1818
val uri: Uri = uriString.toUri()
19-
return contentResolver.openOutputStream(uri, mode)?.asSink()
19+
// Use truncate/overwrite mode by default
20+
return contentResolver.openOutputStream(uri, "wt")?.asSink()
2021
}
2122

2223
override fun openSource(uriString: String): RawSource? {

core/file/src/androidUnitTest/kotlin/net/thunderbird/core/file/AndroidFileSystemManagerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class AndroidFileSystemManagerTest {
3333
val testText = "Hello Thunderbird Android!"
3434

3535
// Act
36-
val sink = checkNotNull(testSubject.openSink(uri.toString(), "wt"))
36+
val sink = checkNotNull(testSubject.openSink(uri.toString()))
3737
val writeBuffer = Buffer().apply { write(testText.encodeToByteArray()) }
3838
sink.write(writeBuffer, writeBuffer.size)
3939
sink.flush()

core/file/src/commonMain/kotlin/net/thunderbird/core/file/FileSystemManager.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ interface FileSystemManager {
1010
/**
1111
* Opens a sink for writing to a URI.
1212
*
13+
* Implementations should open the destination for writing in overwrite/truncate mode.
14+
*
1315
* @param uriString The URI string to open a sink for
14-
* @param mode The mode to open the sink in (e.g., "wt" for write text)
1516
* @return A sink for writing to the URI, or null if the URI couldn't be opened
1617
*/
17-
fun openSink(uriString: String, mode: String): RawSink?
18+
fun openSink(uriString: String): RawSink?
1819

1920
/**
2021
* Opens a source for reading from a URI.

core/file/src/commonMain/kotlin/net/thunderbird/core/file/command/CopyCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ internal class CopyCommand(
1919
?: return Outcome.Failure(
2020
FileOperationError.Unavailable(sourceUri, "Unable to open source: $sourceUri"),
2121
)
22-
val sink = fs.openSink(destinationUri.toString(), "wt")
22+
val sink = fs.openSink(destinationUri.toString())
2323
?: return Outcome.Failure(
2424
FileOperationError.Unavailable(destinationUri, "Unable to open destination: $destinationUri"),
2525
)

core/file/src/commonTest/kotlin/net/thunderbird/core/file/FakeFileSystemManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class FakeFileSystemManager : FileSystemManager {
1212

1313
private val storage = mutableMapOf<String, ByteArray>()
1414

15-
override fun openSink(uriString: String, mode: String): RawSink? {
15+
override fun openSink(uriString: String): RawSink? {
1616
return object : RawSink {
1717
private val collected = mutableListOf<Byte>()
1818

core/file/src/jvmMain/kotlin/net/thunderbird/core/file/JvmFileSystemManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import kotlinx.io.asSource
1212
* JVM implementation of [FileSystemManager] using java.io streams.
1313
*/
1414
class JvmFileSystemManager : FileSystemManager {
15-
override fun openSink(uriString: String, mode: String): RawSink? {
15+
override fun openSink(uriString: String): RawSink? {
1616
// Only support simple file paths for JVM implementation
1717
return try {
1818
val file = File(uriString)
1919
// create parent directories if necessary
2020
file.parentFile?.mkdirs()
21-
val append = mode.contains("a") // crude check for append mode
21+
val append = false // overwrite/truncate by default
2222
FileOutputStream(file, append).asSink()
2323
} catch (_: Throwable) {
2424
null

core/file/src/jvmTest/kotlin/net/thunderbird/core/file/JvmFileSystemManagerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class JvmFileSystemManagerTest {
2121
// Arrange
2222
val tempFile: File = folder.newFile("tb-file-fs-test.txt")
2323
val testText = "Hello Thunderbird!"
24-
val sink = checkNotNull(testSubject.openSink(tempFile.absolutePath, "wt"))
24+
val sink = checkNotNull(testSubject.openSink(tempFile.absolutePath))
2525

2626
// Act
2727
val writeBuffer = Buffer().apply { write(testText.encodeToByteArray()) }

0 commit comments

Comments
 (0)