Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package io.writeopia.core.folders.api

import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
import io.ktor.client.request.header
import io.ktor.client.request.post
import io.ktor.client.request.setBody
Expand All @@ -16,11 +18,16 @@ import io.writeopia.sdk.models.document.Document
import io.writeopia.sdk.models.document.Folder
import io.writeopia.sdk.models.utils.ResultData
import io.writeopia.sdk.serialization.data.DocumentApi
import io.writeopia.sdk.serialization.data.FolderApi
import io.writeopia.sdk.serialization.extensions.toApi
import io.writeopia.sdk.serialization.extensions.toModel
import io.writeopia.sdk.serialization.json.SendDocumentsRequest
import io.writeopia.sdk.serialization.json.SendFoldersRequest
import io.writeopia.sdk.serialization.request.CreateFolderRequest
import io.writeopia.sdk.serialization.request.DeleteDocumentsRequest
import io.writeopia.sdk.serialization.request.MoveFolderRequest
import io.writeopia.sdk.serialization.request.WorkspaceDiffRequest
import io.writeopia.sdk.serialization.response.FolderContentResponse
import io.writeopia.sdk.serialization.response.WorkspaceDiffResponse
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
Expand Down Expand Up @@ -108,4 +115,97 @@ class DocumentsApi(private val client: HttpClient, private val baseUrl: String)
ResultData.Error()
}
}

suspend fun createFolder(
parentFolderId: String,
title: String,
workspaceId: String,
token: String
): ResultData<Folder> {
val response = client.post("$baseUrl/api/workspace/$workspaceId/folder/$parentFolderId/create") {
contentType(ContentType.Application.Json)
setBody(CreateFolderRequest(title))
header(HttpHeaders.Authorization, "Bearer $token")
}

return if (response.status.isSuccess()) {
ResultData.Complete(response.body<FolderApi>().toModel())
} else {
println("error creating folder: $response")
ResultData.Error()
}
}

suspend fun getFolderContents(
folderId: String,
workspaceId: String,
token: String
): ResultData<FolderContentResponse> {
val response = client.get("$baseUrl/api/workspace/$workspaceId/folder/$folderId/contents") {
header(HttpHeaders.Authorization, "Bearer $token")
}

return if (response.status.isSuccess()) {
ResultData.Complete(response.body<FolderContentResponse>())
} else {
println("error getting folder contents: $response")
ResultData.Error()
}
}

suspend fun deleteFolder(
folderId: String,
workspaceId: String,
token: String
): ResultData<Unit> {
val response = client.delete("$baseUrl/api/workspace/$workspaceId/folder/$folderId") {
header(HttpHeaders.Authorization, "Bearer $token")
}

return if (response.status.isSuccess()) {
ResultData.Complete(Unit)
} else {
println("error deleting folder: $response")
ResultData.Error()
}
}

suspend fun deleteDocuments(
documentIds: List<String>,
workspaceId: String,
token: String
): ResultData<Unit> {
val response = client.post("$baseUrl/api/workspace/$workspaceId/document/delete") {
contentType(ContentType.Application.Json)
setBody(DeleteDocumentsRequest(documentIds))
header(HttpHeaders.Authorization, "Bearer $token")
}

return if (response.status.isSuccess()) {
ResultData.Complete(Unit)
} else {
println("error deleting documents: $response")
ResultData.Error()
}
}

suspend fun moveFolder(
folderId: String,
targetParentId: String,
workspaceId: String,
token: String
): ResultData<Unit> {
val response = client.post("$baseUrl/api/workspace/$workspaceId/folder/$folderId/move") {
contentType(ContentType.Application.Json)
setBody(MoveFolderRequest(targetParentId))
header(HttpHeaders.Authorization, "Bearer $token")
}

return if (response.status.isSuccess()) {
ResultData.Complete(Unit)
} else {
println("error moving folder: $response")
ResultData.Error()
}
}
}
3 changes: 3 additions & 0 deletions application/features/note_menu/config/ktlint/baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@
<file name="src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/FolderStateController.kt">
<error line="34" column="17" source="standard:backing-property-naming" />
</file>
<file name="src/commonMain/kotlin/io/writeopia/notemenu/viewmodel/onlybe/OnlyBackendChooseNoteKmpViewModel.kt">
<error line="107" column="17" source="standard:backing-property-naming" />
</file>
</baseline>
Loading