Skip to content

Commit 24dcc4a

Browse files
authored
Merge pull request #21 from linked-planet/feature/date_time_picker
use correct dateFormat for DateTime CustomField
2 parents 2cc3352 + 4abb399 commit 24dcc4a

File tree

1 file changed

+16
-12
lines changed
  • kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/field

1 file changed

+16
-12
lines changed

kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/field/SdkJiraField.kt

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ package com.linkedplanet.kotlinjiraclient.sdk.field
2121

2222
import com.atlassian.jira.component.ComponentAccessor
2323
import com.atlassian.jira.config.IssueTypeManager
24+
import com.atlassian.jira.datetime.DateTimeFormatterFactory
25+
import com.atlassian.jira.datetime.DateTimeStyle
2426
import com.atlassian.jira.issue.IssueInputParameters
2527
import com.atlassian.jira.issue.context.IssueContext
2628
import com.atlassian.jira.issue.context.IssueContextImpl
29+
import com.atlassian.jira.issue.customfields.CustomFieldTypes
2730
import com.atlassian.jira.issue.fields.CustomField
28-
import com.atlassian.jira.timezone.TimeZoneManager
2931
import com.linkedplanet.kotlinjiraclient.api.field.JiraAssigneeField
3032
import com.linkedplanet.kotlinjiraclient.api.field.JiraCustomDateTimeField
3133
import com.linkedplanet.kotlinjiraclient.api.field.JiraCustomField
@@ -43,12 +45,10 @@ import com.linkedplanet.kotlinjiraclient.api.field.JiraProjectField
4345
import com.linkedplanet.kotlinjiraclient.api.field.JiraReporterField
4446
import com.linkedplanet.kotlinjiraclient.api.field.JiraSummaryField
4547
import java.time.ZonedDateTime
46-
import java.time.format.DateTimeFormatter
4748

48-
private val customFieldManager by lazy { ComponentAccessor.getCustomFieldManager() }
49-
private val issueTypeManager by lazy { ComponentAccessor.getComponent(IssueTypeManager::class.java) }
50-
private val optionsManager by lazy { ComponentAccessor.getOptionsManager() }
51-
private val timezoneManager by lazy { ComponentAccessor.getComponent(TimeZoneManager::class.java) }
49+
private val customFieldManager = ComponentAccessor.getCustomFieldManager()
50+
private val issueTypeManager = ComponentAccessor.getComponent(IssueTypeManager::class.java)
51+
private val optionsManager = ComponentAccessor.getOptionsManager()
5252

5353
interface SdkJiraField {
5454
fun render(issue: IssueInputParameters)
@@ -154,14 +154,18 @@ class SdkJiraCustomDateTimeField(
154154
dateTime: ZonedDateTime
155155
) : JiraCustomDateTimeField(customFieldName, dateTime), SdkJiraField {
156156

157-
private val dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MMM/yy h:mm a")
157+
private val formatterFactory = ComponentAccessor.getComponent(DateTimeFormatterFactory::class.java)
158158

159159
override fun render(issue: IssueInputParameters) {
160-
val dateTimeInUserTimeZone = dateTime.withZoneSameInstant(timezoneManager.loggedInUserTimeZone.toZoneId())
161-
issue.addCustomFieldValue(
162-
customField().id,
163-
dateTimeInUserTimeZone.format(dateTimeFormatter)
164-
)
160+
val customField = customField()
161+
162+
val dateTimeStyle = when (customField.customFieldType.key) {
163+
CustomFieldTypes.DATEPICKER.key -> DateTimeStyle.DATE_PICKER
164+
else -> DateTimeStyle.DATE_TIME_PICKER
165+
}
166+
val dateTimeFormatter = formatterFactory.formatter().forLoggedInUser().withStyle(dateTimeStyle)
167+
val dateInUserFormat = dateTimeFormatter.format(java.util.Date.from(dateTime.toInstant()))
168+
issue.addCustomFieldValue(customField.id, dateInUserFormat)
165169
}
166170
}
167171

0 commit comments

Comments
 (0)