Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
See what's new at GitLab
4
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Switch to GitLab Next
Sign in / Register
Toggle navigation
GitFox
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Test Cases
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Yamko
GitFox
Commits
66c123a1
Commit
66c123a1
authored
Jun 02, 2019
by
Eugene Shapovalov
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor date and time logic with timezone.
parent
9809e778
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
115 additions
and
82 deletions
+115
-82
app/src/main/java/ru/terrakok/gitlabclient/di/provider/GsonProvider.kt
...java/ru/terrakok/gitlabclient/di/provider/GsonProvider.kt
+3
-3
app/src/main/java/ru/terrakok/gitlabclient/entity/Commit.kt
app/src/main/java/ru/terrakok/gitlabclient/entity/Commit.kt
+4
-4
app/src/main/java/ru/terrakok/gitlabclient/entity/Note.kt
app/src/main/java/ru/terrakok/gitlabclient/entity/Note.kt
+3
-3
app/src/main/java/ru/terrakok/gitlabclient/entity/Owner.kt
app/src/main/java/ru/terrakok/gitlabclient/entity/Owner.kt
+2
-2
app/src/main/java/ru/terrakok/gitlabclient/entity/Project.kt
app/src/main/java/ru/terrakok/gitlabclient/entity/Project.kt
+3
-3
app/src/main/java/ru/terrakok/gitlabclient/entity/User.kt
app/src/main/java/ru/terrakok/gitlabclient/entity/User.kt
+5
-5
app/src/main/java/ru/terrakok/gitlabclient/entity/app/target/TargetHeader.kt
...u/terrakok/gitlabclient/entity/app/target/TargetHeader.kt
+2
-2
app/src/main/java/ru/terrakok/gitlabclient/entity/event/Event.kt
.../main/java/ru/terrakok/gitlabclient/entity/event/Event.kt
+2
-2
app/src/main/java/ru/terrakok/gitlabclient/entity/issue/Issue.kt
.../main/java/ru/terrakok/gitlabclient/entity/issue/Issue.kt
+6
-5
app/src/main/java/ru/terrakok/gitlabclient/entity/mergerequest/MergeRequest.kt
...terrakok/gitlabclient/entity/mergerequest/MergeRequest.kt
+5
-5
app/src/main/java/ru/terrakok/gitlabclient/entity/milestone/Milestone.kt
...va/ru/terrakok/gitlabclient/entity/milestone/Milestone.kt
+3
-3
app/src/main/java/ru/terrakok/gitlabclient/entity/target/Target.kt
...ain/java/ru/terrakok/gitlabclient/entity/target/Target.kt
+3
-3
app/src/main/java/ru/terrakok/gitlabclient/entity/target/issue/Issue.kt
...ava/ru/terrakok/gitlabclient/entity/target/issue/Issue.kt
+2
-1
app/src/main/java/ru/terrakok/gitlabclient/entity/todo/Todo.kt
...rc/main/java/ru/terrakok/gitlabclient/entity/todo/Todo.kt
+2
-2
app/src/main/java/ru/terrakok/gitlabclient/extension/HumanView.kt
...main/java/ru/terrakok/gitlabclient/extension/HumanView.kt
+10
-5
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/GitlabApi.kt
...a/ru/terrakok/gitlabclient/model/data/server/GitlabApi.kt
+12
-11
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/deserializer/OffsetDateTimeDeserializer.kt
...el/data/server/deserializer/OffsetDateTimeDeserializer.kt
+22
-0
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/deserializer/TodoDeserializer.kt
...client/model/data/server/deserializer/TodoDeserializer.kt
+2
-2
app/src/main/java/ru/terrakok/gitlabclient/model/interactor/milestone/MilestoneInteractor.kt
...bclient/model/interactor/milestone/MilestoneInteractor.kt
+5
-4
app/src/main/java/ru/terrakok/gitlabclient/model/repository/event/EventRepository.kt
...ok/gitlabclient/model/repository/event/EventRepository.kt
+5
-5
app/src/main/java/ru/terrakok/gitlabclient/model/repository/mergerequest/MergeRequestRepository.kt
...t/model/repository/mergerequest/MergeRequestRepository.kt
+5
-5
app/src/main/java/ru/terrakok/gitlabclient/model/repository/milestone/MilestoneRepository.kt
...bclient/model/repository/milestone/MilestoneRepository.kt
+7
-6
app/src/test/java/ru/terrakok/gitlabclient/model/repository/profile/ProfileRepositoryTest.kt
...bclient/model/repository/profile/ProfileRepositoryTest.kt
+2
-1
No files found.
app/src/main/java/ru/terrakok/gitlabclient/di/provider/GsonProvider.kt
View file @
66c123a1
...
...
@@ -3,12 +3,12 @@ package ru.terrakok.gitlabclient.di.provider
import
com.google.gson.Gson
import
com.google.gson.GsonBuilder
import
org.threeten.bp.LocalDate
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Color
import
ru.terrakok.gitlabclient.entity.todo.Todo
import
ru.terrakok.gitlabclient.model.data.server.deserializer.ColorDeserializer
import
ru.terrakok.gitlabclient.model.data.server.deserializer.LocalDateTimeDeserializer
import
ru.terrakok.gitlabclient.model.data.server.deserializer.LocalDateDeserializer
import
ru.terrakok.gitlabclient.model.data.server.deserializer.OffsetDateTimeDeserializer
import
ru.terrakok.gitlabclient.model.data.server.deserializer.TodoDeserializer
import
javax.inject.Inject
import
javax.inject.Provider
...
...
@@ -20,9 +20,9 @@ class GsonProvider @Inject constructor() : Provider<Gson> {
override
fun
get
():
Gson
=
GsonBuilder
()
.
registerTypeAdapter
(
LocalDateTime
::
class
.
java
,
LocalDateTimeDeserializer
())
.
registerTypeAdapter
(
Todo
::
class
.
java
,
TodoDeserializer
())
.
registerTypeAdapter
(
Color
::
class
.
java
,
ColorDeserializer
())
.
registerTypeAdapter
(
LocalDate
::
class
.
java
,
LocalDateDeserializer
())
.
registerTypeAdapter
(
OffsetDateTime
::
class
.
java
,
OffsetDateTimeDeserializer
())
.
create
()
}
\ No newline at end of file
app/src/main/java/ru/terrakok/gitlabclient/entity/Commit.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
/**
* Created by Eugene Shapovalov (@CraggyHaggy) on 20.10.18.
...
...
@@ -12,11 +12,11 @@ data class Commit(
@SerializedName
(
"title"
)
val
title
:
String
,
@SerializedName
(
"author_name"
)
val
authorName
:
String
,
@SerializedName
(
"author_email"
)
val
authorEmail
:
String
?,
@SerializedName
(
"authored_date"
)
val
authoredDate
:
Local
DateTime
,
@SerializedName
(
"authored_date"
)
val
authoredDate
:
Offset
DateTime
,
@SerializedName
(
"commiter_name"
)
val
commiterName
:
String
?,
@SerializedName
(
"commiter_email"
)
val
commiterEmail
:
String
?,
@SerializedName
(
"commited_date"
)
val
commitedDate
:
Local
DateTime
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
,
@SerializedName
(
"commited_date"
)
val
commitedDate
:
Offset
DateTime
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
,
@SerializedName
(
"message"
)
val
message
:
String
,
@SerializedName
(
"parent_ids"
)
val
parentIds
:
List
<
String
>
)
\ No newline at end of file
app/src/main/java/ru/terrakok/gitlabclient/entity/Note.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.event.EventTargetType
data class
Note
(
@SerializedName
(
"id"
)
val
id
:
Long
,
@SerializedName
(
"body"
)
val
body
:
String
,
@SerializedName
(
"author"
)
val
author
:
Author
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Local
DateTime
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Offset
DateTime
?,
@SerializedName
(
"system"
)
val
isSystem
:
Boolean
,
@SerializedName
(
"noteable_id"
)
val
noteableId
:
Long
,
@SerializedName
(
"noteable_type"
)
val
noteableType
:
EventTargetType
?,
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/Owner.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
data class
Owner
(
@SerializedName
(
"id"
)
val
id
:
Long
,
@SerializedName
(
"name"
)
val
name
:
String
,
@SerializedName
(
"username"
)
val
username
:
String
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
?
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
?
)
app/src/main/java/ru/terrakok/gitlabclient/entity/Project.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
data class
Project
(
@SerializedName
(
"id"
)
val
id
:
Long
,
...
...
@@ -24,8 +24,8 @@ data class Project(
@SerializedName
(
"wiki_enabled"
)
val
wikiEnabled
:
Boolean
,
@SerializedName
(
"snippets_enabled"
)
val
snippetsEnabled
:
Boolean
,
@SerializedName
(
"container_registry_enabled"
)
val
containerRegistryEnabled
:
Boolean
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
?,
@SerializedName
(
"last_activity_at"
)
val
lastActivityAt
:
Local
DateTime
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
?,
@SerializedName
(
"last_activity_at"
)
val
lastActivityAt
:
Offset
DateTime
?,
@SerializedName
(
"creator_id"
)
val
creatorId
:
Long
,
@SerializedName
(
"namespace"
)
val
namespace
:
Namespace
?,
@SerializedName
(
"permissions"
)
val
permissions
:
Permissions
?,
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/User.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
data class
User
(
@SerializedName
(
"id"
)
val
id
:
Long
,
...
...
@@ -11,7 +11,7 @@ data class User(
@SerializedName
(
"state"
)
val
state
:
String
?,
@SerializedName
(
"avatar_url"
)
val
avatarUrl
:
String
?,
@SerializedName
(
"web_url"
)
val
webUrl
:
String
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
,
@SerializedName
(
"is_admin"
)
val
isAdmin
:
Boolean
,
@SerializedName
(
"bio"
)
val
bio
:
String
?,
@SerializedName
(
"location"
)
val
location
:
String
?,
...
...
@@ -20,11 +20,11 @@ data class User(
@SerializedName
(
"twitter"
)
val
twitter
:
String
?,
@SerializedName
(
"website_url"
)
val
websiteUrl
:
String
?,
@SerializedName
(
"organization"
)
val
organization
:
String
?,
@SerializedName
(
"last_sign_in_at"
)
val
lastSignInAt
:
Local
DateTime
,
@SerializedName
(
"confirmed_at"
)
val
confirmedAt
:
Local
DateTime
,
@SerializedName
(
"last_sign_in_at"
)
val
lastSignInAt
:
Offset
DateTime
,
@SerializedName
(
"confirmed_at"
)
val
confirmedAt
:
Offset
DateTime
,
@SerializedName
(
"color_scheme_id"
)
val
colorSchemeId
:
Long
,
@SerializedName
(
"projects_limit"
)
val
projectsLimit
:
Long
,
@SerializedName
(
"current_sign_in_at"
)
val
currentSignInAt
:
Local
DateTime
,
@SerializedName
(
"current_sign_in_at"
)
val
currentSignInAt
:
Offset
DateTime
,
@SerializedName
(
"identities"
)
val
identities
:
List
<
Identity
>?,
@SerializedName
(
"can_create_group"
)
val
canCreateGroup
:
Boolean
,
@SerializedName
(
"can_create_project"
)
val
canCreateProject
:
Boolean
,
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/app/target/TargetHeader.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.app.target
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Author
/**
...
...
@@ -12,7 +12,7 @@ sealed class TargetHeader {
val
icon
:
TargetHeaderIcon
,
val
title
:
TargetHeaderTitle
,
val
body
:
CharSequence
,
val
date
:
Local
DateTime
,
val
date
:
Offset
DateTime
,
val
target
:
AppTarget
,
val
targetId
:
Long
,
val
internal
:
TargetInternal
?,
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/event/Event.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.event
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Author
import
ru.terrakok.gitlabclient.entity.Note
import
ru.terrakok.gitlabclient.entity.PushData
...
...
@@ -18,7 +18,7 @@ data class Event(
@SerializedName
(
"target_type"
)
val
targetType
:
EventTargetType
?,
@SerializedName
(
"author_id"
)
val
authorId
:
Long
,
@SerializedName
(
"target_title"
)
val
targetTitle
:
String
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
,
@SerializedName
(
"author"
)
val
author
:
Author
,
@SerializedName
(
"author_username"
)
val
authorUsername
:
String
,
@SerializedName
(
"push_data"
)
val
pushData
:
PushData
?,
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/issue/Issue.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.issue
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.LocalDateTime
import
org.threeten.bp.LocalDate
import
org.threeten.bp.OffsetDateTime
import
ru.terrakok.gitlabclient.entity.Assignee
import
ru.terrakok.gitlabclient.entity.Author
import
ru.terrakok.gitlabclient.entity.milestone.Milestone
...
...
@@ -15,12 +16,12 @@ data class Issue(
@SerializedName
(
"milestone"
)
val
milestone
:
Milestone
?,
@SerializedName
(
"project_id"
)
val
projectId
:
Long
,
@SerializedName
(
"assignees"
)
val
assignees
:
List
<
Assignee
>,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Local
DateTime
?,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Offset
DateTime
?,
@SerializedName
(
"title"
)
val
title
:
String
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
,
@SerializedName
(
"labels"
)
val
labels
:
List
<
String
>,
@SerializedName
(
"user_notes_count"
)
val
userNotesCount
:
Int
,
@SerializedName
(
"due_date"
)
val
dueDate
:
String
?,
@SerializedName
(
"due_date"
)
val
dueDate
:
LocalDate
?,
@SerializedName
(
"web_url"
)
val
webUrl
:
String
?,
@SerializedName
(
"confidential"
)
val
confidential
:
Boolean
,
@SerializedName
(
"upvotes"
)
val
upvotes
:
Int
,
...
...
@@ -29,7 +30,7 @@ data class Issue(
// This value will only be present for issues which were closed after GitLab 10.6 and
// when the user account that closed the issue still exists.
@SerializedName
(
"closed_by"
)
val
closedBy
:
Author
?,
@SerializedName
(
"closed_at"
)
val
closedAt
:
Local
DateTime
?,
@SerializedName
(
"closed_at"
)
val
closedAt
:
Offset
DateTime
?,
// The merge_requests_count attribute was introduced in GitLab 11.9.
@SerializedName
(
"merge_requests_count"
)
val
relatedMergeRequestCount
:
Int
)
\ No newline at end of file
app/src/main/java/ru/terrakok/gitlabclient/entity/mergerequest/MergeRequest.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.mergerequest
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Author
import
ru.terrakok.gitlabclient.entity.User
import
ru.terrakok.gitlabclient.entity.milestone.Milestone
...
...
@@ -9,8 +9,8 @@ import ru.terrakok.gitlabclient.entity.milestone.Milestone
data class
MergeRequest
(
@SerializedName
(
"id"
)
val
id
:
Long
,
@SerializedName
(
"iid"
)
val
iid
:
Long
,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Local
DateTime
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Offset
DateTime
?,
@SerializedName
(
"target_branch"
)
val
targetBranch
:
String
,
@SerializedName
(
"source_branch"
)
val
sourceBranch
:
String
,
@SerializedName
(
"project_id"
)
val
projectId
:
Long
,
...
...
@@ -39,8 +39,8 @@ data class MergeRequest(
// This value will only be present for merge requests which were closed/merged after GitLab 10.6
// and when the user account that closed/merged the issue still exists.
@SerializedName
(
"closed_by"
)
val
closedBy
:
Author
?,
@SerializedName
(
"closed_at"
)
val
closedAt
:
Local
DateTime
?,
@SerializedName
(
"closed_at"
)
val
closedAt
:
Offset
DateTime
?,
@SerializedName
(
"merged_by"
)
val
mergedBy
:
Author
?,
@SerializedName
(
"merged_at"
)
val
mergedAt
:
Local
DateTime
?,
@SerializedName
(
"merged_at"
)
val
mergedAt
:
Offset
DateTime
?,
@SerializedName
(
"changes"
)
val
changes
:
List
<
MergeRequestChange
>?
)
app/src/main/java/ru/terrakok/gitlabclient/entity/milestone/Milestone.kt
View file @
66c123a1
...
...
@@ -2,7 +2,7 @@ package ru.terrakok.gitlabclient.entity.milestone
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.LocalDate
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
data class
Milestone
(
@SerializedName
(
"id"
)
val
id
:
Long
,
...
...
@@ -12,8 +12,8 @@ data class Milestone(
@SerializedName
(
"state"
)
val
state
:
MilestoneState
,
@SerializedName
(
"due_date"
)
val
dueDate
:
LocalDate
?,
@SerializedName
(
"start_date"
)
val
startDate
:
LocalDate
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
?,
@SerializedName
(
"created_at"
)
val
createdAt
:
Offset
DateTime
?,
@SerializedName
(
"title"
)
val
title
:
String
?,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Local
DateTime
?,
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Offset
DateTime
?,
@SerializedName
(
"web_url"
)
val
webUrl
:
String
?
)
app/src/main/java/ru/terrakok/gitlabclient/entity/target/Target.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.target
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Assignee
import
ru.terrakok.gitlabclient.entity.Author
import
ru.terrakok.gitlabclient.entity.milestone.Milestone
...
...
@@ -21,9 +21,9 @@ abstract class Target {
@SerializedName
(
"state"
)
private
val
_state
:
TargetState
?
=
null
@SerializedName
(
"updated_at"
)
val
updatedAt
:
Local
DateTime
?
=
null
val
updatedAt
:
Offset
DateTime
?
=
null
@SerializedName
(
"created_at"
)
val
createdAt
:
Local
DateTime
?
=
null
val
createdAt
:
Offset
DateTime
?
=
null
@SerializedName
(
"labels"
)
private
val
_labels
:
List
<
String
>?
=
null
@SerializedName
(
"milestone"
)
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/target/issue/Issue.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.target.issue
import
com.google.gson.annotations.SerializedName
import
org.threeten.bp.LocalDate
import
ru.terrakok.gitlabclient.entity.Links
import
ru.terrakok.gitlabclient.entity.target.Target
...
...
@@ -9,7 +10,7 @@ import ru.terrakok.gitlabclient.entity.target.Target
*/
class
Issue
:
Target
()
{
@SerializedName
(
"due_date"
)
val
dueDate
:
String
?
=
null
val
dueDate
:
LocalDate
?
=
null
@SerializedName
(
"confidential"
)
private
val
_confidential
:
Boolean
?
=
null
@SerializedName
(
"weight"
)
...
...
app/src/main/java/ru/terrakok/gitlabclient/entity/todo/Todo.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.entity.todo
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Author
import
ru.terrakok.gitlabclient.entity.Project
import
ru.terrakok.gitlabclient.entity.target.Target
...
...
@@ -19,5 +19,5 @@ data class Todo(
val
targetUrl
:
String
,
val
body
:
String
,
val
state
:
TodoState
,
val
createdAt
:
Local
DateTime
val
createdAt
:
Offset
DateTime
)
\ No newline at end of file
app/src/main/java/ru/terrakok/gitlabclient/extension/HumanView.kt
View file @
66c123a1
...
...
@@ -5,7 +5,7 @@ import android.content.res.Resources
import
androidx.annotation.DrawableRes
import
org.threeten.bp.Duration
import
org.threeten.bp.LocalDate
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
org.threeten.bp.format.DateTimeFormatter
import
retrofit2.HttpException
import
ru.terrakok.gitlabclient.R
...
...
@@ -41,8 +41,11 @@ fun Throwable.userMessage(resourceManager: ResourceManager) = when (this) {
}
private
val
DATE_FORMAT
=
DateTimeFormatter
.
ofPattern
(
"dd MMM yyyy"
)
fun
LocalDateTime
.
humanTime
(
resources
:
Resources
):
String
{
val
delta
=
Duration
.
between
(
this
,
LocalDateTime
.
now
())
fun
OffsetDateTime
.
humanTime
(
resources
:
Resources
):
String
{
val
now
=
OffsetDateTime
.
now
()
val
ui
=
OffsetDateTime
.
of
(
toLocalDateTime
(),
now
.
offset
)
val
delta
=
Duration
.
between
(
ui
,
now
)
.
seconds
.
let
{
maxOf
(
0
,
it
)
}
...
...
@@ -58,7 +61,7 @@ fun LocalDateTime.humanTime(resources: Resources): String {
return
resources
.
getString
(
R
.
string
.
time_ago
,
timeStr
)
}
fun
LocalDate
.
humanDate
()
=
format
(
DATE_FORMAT
)
fun
LocalDate
.
humanDate
()
:
String
=
format
(
DATE_FORMAT
)
fun
EventAction
.
getHumanName
(
resources
:
Resources
)
=
when
(
this
)
{
EventAction
.
UPDATED
->
resources
.
getString
(
R
.
string
.
event_action_updated
)
...
...
@@ -135,7 +138,9 @@ fun TargetHeaderTitle.getHumanName(resources: Resources) = when (this) {
when
(
action
)
{
TodoAction
.
ASSIGNED
->
{
"$author $actionName $targetName ${resources.getString(R.string.at)} $projectName ${resources.getString(R.string.to)} $assignee"
"$author $actionName $targetName ${resources.getString(R.string.at)} $projectName ${resources.getString(
R
.
string
.
to
)}
$
assignee
"
}
TodoAction
.
DIRECTLY_ADDRESSED
,
TodoAction
.
MENTIONED
->
{
...
...
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/GitlabApi.kt
View file @
66c123a1
...
...
@@ -2,7 +2,8 @@ package ru.terrakok.gitlabclient.model.data.server
import
io.reactivex.Completable
import
io.reactivex.Single
import
org.threeten.bp.LocalDateTime
import
org.threeten.bp.LocalDate
import
org.threeten.bp.OffsetDateTime
import
retrofit2.adapter.rxjava2.Result
import
retrofit2.http.*
import
ru.terrakok.gitlabclient.entity.*
...
...
@@ -163,8 +164,8 @@ interface GitlabApi {
@Query
(
"milestone"
)
milestone
:
String
?,
@Query
(
"view"
)
viewType
:
MergeRequestViewType
?,
@Query
(
"labels"
)
labels
:
String
?,
@Query
(
"created_before"
)
createdBefore
:
Local
DateTime
?,
@Query
(
"created_after"
)
createdAfter
:
Local
DateTime
?,
@Query
(
"created_before"
)
createdBefore
:
Offset
DateTime
?,
@Query
(
"created_after"
)
createdAfter
:
Offset
DateTime
?,
@Query
(
"scope"
)
scope
:
MergeRequestScope
?,
@Query
(
"author_id"
)
authorId
:
Int
?,
@Query
(
"assignee_id"
)
assigneeId
:
Int
?,
...
...
@@ -182,8 +183,8 @@ interface GitlabApi {
@Query
(
"milestone"
)
milestone
:
String
?,
@Query
(
"view"
)
viewType
:
MergeRequestViewType
?,
@Query
(
"labels"
)
labels
:
String
?,
@Query
(
"created_before"
)
createdBefore
:
Local
DateTime
?,
@Query
(
"created_after"
)
createdAfter
:
Local
DateTime
?,
@Query
(
"created_before"
)
createdBefore
:
Offset
DateTime
?,
@Query
(
"created_after"
)
createdAfter
:
Offset
DateTime
?,
@Query
(
"scope"
)
scope
:
MergeRequestScope
?,
@Query
(
"author_id"
)
authorId
:
Int
?,
@Query
(
"assignee_id"
)
assigneeId
:
Int
?,
...
...
@@ -298,23 +299,23 @@ interface GitlabApi {
@FormUrlEncoded
@POST
(
"$API_PATH/projects/{project_id}/milestones"
)
fun
createMile
S
tone
(
fun
createMile
s
tone
(
@Path
(
"project_id"
)
projectId
:
Long
,
@Field
(
"title"
)
title
:
String
,
@Field
(
"description"
)
description
:
String
?,
@Field
(
"due_date"
)
dueDate
:
String
?,
@Field
(
"start_date"
)
startDate
:
String
?
@Field
(
"due_date"
)
dueDate
:
LocalDate
?,
@Field
(
"start_date"
)
startDate
:
LocalDate
?
):
Single
<
Milestone
>
@FormUrlEncoded
@PUT
(
"$API_PATH/projects/{project_id}/milestones/{milestone_id}"
)
fun
updateMile
S
tone
(
fun
updateMile
s
tone
(
@Path
(
"project_id"
)
projectId
:
Long
,
@Path
(
"milestone_id"
)
mileStoneId
:
Long
,
@Field
(
"title"
)
title
:
String
?,
@Field
(
"description"
)
description
:
String
?,
@Field
(
"due_date"
)
dueDate
:
String
?,
@Field
(
"start_date"
)
startDate
:
String
?
@Field
(
"due_date"
)
dueDate
:
LocalDate
?,
@Field
(
"start_date"
)
startDate
:
LocalDate
?
):
Single
<
Milestone
>
@DELETE
(
"$API_PATH/projects/{project_id}/milestones/{milestone_id}"
)
...
...
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/deserializer/
Local
DateTimeDeserializer.kt
→
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/deserializer/
Offset
DateTimeDeserializer.kt
View file @
66c123a1
...
...
@@ -3,22 +3,20 @@ package ru.terrakok.gitlabclient.model.data.server.deserializer
import
com.google.gson.JsonDeserializationContext
import
com.google.gson.JsonDeserializer
import
com.google.gson.JsonElement
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
ZonedDateTime
import
org.threeten.bp.
Offset
DateTime
import
org.threeten.bp.
format.DateTimeFormatter
import
java.lang.reflect.Type
import
java.util.*
/**
* Created by Konstantin Tskhovrebov (aka @terrakok) on 27.02.18.
*/
class
LocalDateTimeDeserializer
:
JsonDeserializer
<
LocalDateTime
>
{
private
val
offset
=
TimeZone
.
getDefault
().
rawOffset
/
1000L
class
OffsetDateTimeDeserializer
:
JsonDeserializer
<
OffsetDateTime
>
{
override
fun
deserialize
(
json
:
JsonElement
,
type
:
Type
,
jsonDeserializationContext
:
JsonDeserializationContext
):
LocalDateTime
{
return
ZonedDateTime
.
parse
(
json
.
asJsonPrimitive
.
asString
).
plusSeconds
(
offset
).
toLocalDateTime
()
typeOfT
:
Type
,
context
:
JsonDeserializationContext
?
):
OffsetDateTime
{
return
OffsetDateTime
.
parse
(
json
.
asJsonPrimitive
.
asString
,
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd'T'HH:mm:ss.SSSX"
)
)
}
}
\ No newline at end of file
app/src/main/java/ru/terrakok/gitlabclient/model/data/server/deserializer/TodoDeserializer.kt
View file @
66c123a1
...
...
@@ -4,7 +4,7 @@ import com.google.gson.JsonDeserializationContext
import
com.google.gson.JsonDeserializer
import
com.google.gson.JsonElement
import
com.google.gson.JsonParseException
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.entity.Author
import
ru.terrakok.gitlabclient.entity.Project
import
ru.terrakok.gitlabclient.entity.target.Target
...
...
@@ -51,7 +51,7 @@ class TodoDeserializer : JsonDeserializer<Todo> {
jsonObject
.
get
(
"target_url"
).
asString
,
jsonObject
.
get
(
"body"
).
asString
,
context
.
deserialize
<
TodoState
>(
jsonObject
.
get
(
"state"
),
TodoState
::
class
.
java
),
context
.
deserialize
<
LocalDateTime
>(
jsonObject
.
get
(
"created_at"
),
Local
DateTime
::
class
.
java
)
context
.
deserialize
<
OffsetDateTime
>(
jsonObject
.
get
(
"created_at"
),
Offset
DateTime
::
class
.
java
)
)
}
else
{
throw
JsonParseException
(
"Configure Gson in GsonProvider."
)
...
...
app/src/main/java/ru/terrakok/gitlabclient/model/interactor/milestone/MilestoneInteractor.kt
View file @
66c123a1
package
ru.terrakok.gitlabclient.model.interactor.milestone
import
org.threeten.bp.LocalDate
import
ru.terrakok.gitlabclient.entity.milestone.MilestoneState
import
ru.terrakok.gitlabclient.model.repository.issue.IssueRepository
import
ru.terrakok.gitlabclient.model.repository.mergerequest.MergeRequestRepository
...
...
@@ -29,8 +30,8 @@ class MilestoneInteractor @Inject constructor(
projectId
:
Long
,
title
:
String
,
description
:
String
?,
dueDate
:
String
?,
startDate
:
String
?
dueDate
:
LocalDate
?,
startDate
:
LocalDate
?
)
=
milestoneRepository
.
createMilestone
(
projectId
,
title
,
description
,
dueDate
,
startDate
)
...
...
@@ -39,8 +40,8 @@ class MilestoneInteractor @Inject constructor(
milestoneId
:
Long
,
title
:
String
?,
description
:
String
?,
dueDate
:
String
?,
startDate
:
String
?
dueDate
:
LocalDate
?,
startDate
:
LocalDate
?
)
=
milestoneRepository
.
updateMilestone
(
projectId
,
milestoneId
,
title
,
description
,
dueDate
,
startDate
)
...
...
app/src/main/java/ru/terrakok/gitlabclient/model/repository/event/EventRepository.kt
View file @
66c123a1
...
...
@@ -3,7 +3,7 @@ package ru.terrakok.gitlabclient.model.repository.event
import
io.reactivex.Observable
import
io.reactivex.Single
import
io.reactivex.functions.BiFunction
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.di.DefaultPageSize
import
ru.terrakok.gitlabclient.di.PrimitiveWrapper
import
ru.terrakok.gitlabclient.entity.OrderBy
...
...
@@ -34,8 +34,8 @@ class EventRepository @Inject constructor(
fun
getEvents
(
action
:
EventAction
?
=
null
,
targetType
:
EventTarget
?
=
null
,
beforeDay
:
Local
DateTime
?
=
null
,
afterDay
:
Local
DateTime
?
=
null
,
beforeDay
:
Offset
DateTime
?
=
null
,
afterDay
:
Offset
DateTime
?
=
null
,
sort
:
Sort
?
=
Sort
.
DESC
,
orderBy
:
OrderBy
=
OrderBy
.
UPDATED_AT
,
page
:
Int
,
...
...
@@ -68,8 +68,8 @@ class EventRepository @Inject constructor(
projectId
:
Long
,
action
:
EventAction
?
=
null
,
targetType
:
EventTarget
?
=
null
,
beforeDay
:
Local
DateTime
?
=
null
,
afterDay
:
Local
DateTime
?
=
null
,
beforeDay
:
Offset
DateTime
?
=
null
,
afterDay
:
Offset
DateTime
?
=
null
,
sort
:
Sort
?
=
Sort
.
DESC
,
orderBy
:
OrderBy
=
OrderBy
.
UPDATED_AT
,
page
:
Int
,
...
...
app/src/main/java/ru/terrakok/gitlabclient/model/repository/mergerequest/MergeRequestRepository.kt
View file @
66c123a1
...
...
@@ -3,7 +3,7 @@ package ru.terrakok.gitlabclient.model.repository.mergerequest
import
io.reactivex.Observable
import
io.reactivex.Single
import
io.reactivex.functions.BiFunction
import
org.threeten.bp.
Local
DateTime
import
org.threeten.bp.
Offset
DateTime
import
ru.terrakok.gitlabclient.di.DefaultPageSize
import
ru.terrakok.gitlabclient.di.PrimitiveWrapper
import
ru.terrakok.gitlabclient.entity.*
...
...
@@ -33,8 +33,8 @@ class MergeRequestRepository @Inject constructor(
milestone
:
String
?
=
null
,
viewType
:
MergeRequestViewType
?
=
null
,
labels
:
String
?
=
null
,
createdBefore
:
Local
DateTime
?
=
null
,
createdAfter
:
Local
DateTime
?
=
null
,
createdBefore
:
Offset
DateTime
?
=
null
,
createdAfter
:
Offset
DateTime
?
=
null
,
scope
:
MergeRequestScope
?
=
null
,
authorId
:
Int
?
=
null
,
assigneeId
:
Int
?
=
null
,
...
...
@@ -66,8 +66,8 @@ class MergeRequestRepository @Inject constructor(
milestone
:
String
?
=
null
,
viewType
:
MergeRequestViewType
?
=
null
,
labels
:
String
?
=
null
,
createdBefore
:
Local
DateTime
?
=
null
,
createdAfter
:
Local
DateTime
?
=
null
,
createdBefore
:
Offset
DateTime
?
=
null
,
createdAfter
:
Offset
DateTime
?
=
null
,
scope
:
MergeRequestScope
?
=
null
,
authorId
:
Int
?
=
null
,
assigneeId
:
Int
?
=
null
,
...
...
app/src/main/java/ru/terrakok/gitlabclient/model/repository/milestone/MilestoneRepository.kt
View file @
66c123a1
...
...
@@ -2,6 +2,7 @@ package ru.terrakok.gitlabclient.model.repository.milestone
import
io.reactivex.Completable