@@ -27,6 +27,7 @@ import java.text.SimpleDateFormat
2727import java.util.Locale
2828import java.util.TimeZone
2929import javax.inject.Inject
30+ import androidx.core.net.toUri
3031
3132class 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