Skip to content

Commit d922adb

Browse files
committed
change ics export to support categories property
1 parent 37f8927 commit d922adb

File tree

1 file changed

+23
-13
lines changed
  • data_local/src/main/java/com/example/util/simpletimetracker/data_local/file

1 file changed

+23
-13
lines changed

data_local/src/main/java/com/example/util/simpletimetracker/data_local/file/IcsRepoImpl.kt

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import java.text.SimpleDateFormat
2727
import java.util.Locale
2828
import java.util.TimeZone
2929
import javax.inject.Inject
30+
import androidx.core.net.toUri
3031

3132
class IcsRepoImpl @Inject constructor(
3233
private val contentResolver: ContentResolver,
@@ -56,7 +57,7 @@ class IcsRepoImpl @Inject constructor(
5657
var fileOutputStream: BufferedOutputStream? = null
5758

5859
try {
59-
val uri = Uri.parse(uriString)
60+
val uri = uriString.toUri()
6061
fileDescriptor = contentResolver.openFileDescriptor(uri, "w")
6162
fileOutputStream = fileDescriptor?.fileDescriptor
6263
?.let(::FileOutputStream)?.buffered()
@@ -119,21 +120,30 @@ class IcsRepoImpl @Inject constructor(
119120

120121
val commentString = record.comment.clean()
121122
.wrapText(commentTitle)
122-
val categoriesString = categories.joinToString(separator = ", ") { it.name.clean() }
123+
val categoriesString = categories
124+
.joinToString(separator = ", ", transform = { it.name.clean() })
123125
.wrapText(categoryTitle)
124-
val tagsString = recordTags.joinToString(separator = ", ") { it.name.clean() }
126+
val tagsString = recordTags
127+
.joinToString(separator = ", ", transform = { it.name.clean() })
125128
.wrapText(tagsTitle)
126129
val description = commentString + categoriesString + tagsString
127-
128-
return StringBuilder()
129-
.append("BEGIN:VEVENT\n")
130-
.append("DTSTART:${formatDateTime(record.timeStarted)}\n")
131-
.append("DTEND:${formatDateTime(record.timeEnded)}\n")
132-
.append("UID:recordId_${record.id}@stt\n")
133-
.append("SUMMARY:${recordType.name.clean()}\n")
134-
.append("DESCRIPTION:$description\n")
135-
.append("END:VEVENT\n")
136-
.toString()
130+
val categoriesProperty = categories
131+
.joinToString(separator = ",", transform = { it.name.clean() })
132+
133+
return buildString {
134+
append("BEGIN:VEVENT\n")
135+
append("DTSTART:${formatDateTime(record.timeStarted)}\n")
136+
append("DTEND:${formatDateTime(record.timeEnded)}\n")
137+
append("UID:recordId_${record.id}@stt\n")
138+
append("SUMMARY:${recordType.name.clean()}\n")
139+
if (description.isNotEmpty()) {
140+
append("DESCRIPTION:$description\n")
141+
}
142+
if (categoriesProperty.isNotEmpty()) {
143+
append("CATEGORIES:$categoriesProperty\n")
144+
}
145+
append("END:VEVENT\n")
146+
}
137147
}
138148

139149
private fun formatDateTime(timestamp: Long): String {

0 commit comments

Comments
 (0)