Commit 4bbb6c8a authored by Eugene Shapovalov's avatar Eugene Shapovalov 💬

Merge remote-tracking branch 'remotes/origin/develop' into fix/list_update

# Conflicts:
#	app/src/main/java/ru/terrakok/gitlabclient/model/data/server/GitlabApi.kt
#	app/src/main/java/ru/terrakok/gitlabclient/model/repository/issue/IssueRepository.kt
#	app/src/main/java/ru/terrakok/gitlabclient/model/repository/mergerequest/MergeRequestRepository.kt
#	app/src/main/java/ru/terrakok/gitlabclient/ui/global/list/DiffCallback.kt
#	app/src/main/java/ru/terrakok/gitlabclient/ui/global/list/SystemNoteAdapterDelegate.kt
#	app/src/main/java/ru/terrakok/gitlabclient/ui/global/list/UserNoteAdapterDelegate.kt
parents 5c7aeb4f 0d5e108e
......@@ -7,6 +7,7 @@ local.properties
# Idea
.idea/
!.idea/codeStyles
**/*.iml
# Mac OS
......
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<AndroidXmlCodeStyleSettings>
<option name="USE_CUSTOM_SETTINGS" value="true" />
</AndroidXmlCodeStyleSettings>
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<Objective-C-extensions>
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cpp" header="h" fileNamingConvention="NONE" />
<pair source="c" header="h" fileNamingConvention="NONE" />
</extensions>
</Objective-C-extensions>
<XML>
<option name="XML_KEEP_LINE_BREAKS" value="false" />
<option name="XML_ALIGN_ATTRIBUTES" value="false" />
<option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" />
</XML>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>
\ No newline at end of file
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>
\ No newline at end of file
......@@ -6,7 +6,7 @@ apply from: '../ci.gradle'
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
buildToolsVersion '28.0.2'
defaultConfig {
applicationId "ru.terrakok.gitlabclient"
......@@ -53,7 +53,7 @@ android {
}
ext {
supportLibraryVersion = "27.1.0"
supportLibraryVersion = "27.1.1"
moxyVersion = "1.4.6"
toothpickVersion = "1.0.6"
retrofitVersion = "2.2.0"
......@@ -64,7 +64,7 @@ dependencies {
//Support
implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
implementation "com.android.support:design:$supportLibraryVersion"
implementation "com.android.support.constraint:constraint-layout:1.0.2"
implementation "com.android.support.constraint:constraint-layout:1.1.3"
implementation "com.android.support:cardview-v7:$supportLibraryVersion"
//Kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
......@@ -79,31 +79,31 @@ dependencies {
implementation "com.github.stephanenicolas.toothpick:toothpick-runtime:$toothpickVersion"
kapt "com.github.stephanenicolas.toothpick:toothpick-compiler:$toothpickVersion"
//Gson
implementation "com.google.code.gson:gson:2.8.0"
implementation "com.google.code.gson:gson:2.8.2"
//Retrofit
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
implementation "com.squareup.okhttp3:logging-interceptor:3.6.0"
implementation "com.squareup.okhttp3:logging-interceptor:3.11.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
//RxJava
implementation "io.reactivex.rxjava2:rxandroid:2.0.1"
implementation "io.reactivex.rxjava2:rxjava:2.1.0"
implementation "io.reactivex.rxjava2:rxjava:2.2.0"
implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'
//Adapter simplify
implementation "com.hannesdorfmann:adapterdelegates3:3.0.1"
//Image load and cache
implementation "com.github.bumptech.glide:glide:3.8.0"
implementation "com.github.bumptech.glide:glide:4.7.1"
//Markdown to HTML converter
implementation "ru.noties:markwon:$markwonVersion"
implementation "ru.noties:markwon-image-loader:$markwonVersion"
//Bottom navigation bar
implementation 'com.aurelhubert:ahbottomnavigation:2.1.0'
//Lottie
implementation 'com.airbnb.android:lottie:2.1.0'
implementation 'com.airbnb.android:lottie:2.5.1'
//Date
implementation 'com.jakewharton.threetenabp:threetenabp:1.0.5'
//FlexBox Layout
implementation 'com.google.android:flexbox:0.3.1'
implementation 'com.google.android:flexbox:1.0.0'
//JUnit
testImplementation "junit:junit:4.12"
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.terrakok.gitlabclient">
xmlns:tools="http://schemas.android.com/tools"
package="ru.terrakok.gitlabclient">
<uses-permission android:name="android.permission.INTERNET"/>
......@@ -10,22 +11,17 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="false"
android:theme="@style/AppTheme">
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".ui.launch.MainActivity"
android:name=".ui.AppActivity"
android:theme="@style/AppTheme.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".ui.auth.AuthActivity"/>
<activity android:name=".ui.user.UserActivity"/>
<activity android:name=".ui.project.ProjectActivity"/>
<activity android:name=".ui.mergerequest.MergeRequestActivity"/>
<activity android:name=".ui.issue.IssueActivity"/>
</application>
</manifest>
\ No newline at end of file
......@@ -58,12 +58,12 @@ class App : Application() {
private fun initMarkwon() {
val theme = SpannableTheme.builderWithDefaults(this)
.codeTextColor(Color.parseColor("#C0341D"))
.codeBackgroundColor(Color.parseColor("#FCEDEA"))
.build()
.codeTextColor(Color.parseColor("#C0341D"))
.codeBackgroundColor(Color.parseColor("#FCEDEA"))
.build()
SpannableConfiguration.builder(this)
.theme(theme)
.build()
.theme(theme)
.build()
}
private fun initThreetenABP() {
......
package ru.terrakok.gitlabclient
import android.content.Context
import android.content.Intent
import ru.terrakok.gitlabclient.ui.auth.AuthActivity
import ru.terrakok.gitlabclient.ui.issue.IssueActivity
import ru.terrakok.gitlabclient.ui.launch.MainActivity
import ru.terrakok.gitlabclient.ui.mergerequest.MergeRequestActivity
import ru.terrakok.gitlabclient.ui.project.ProjectActivity
import ru.terrakok.gitlabclient.ui.user.UserActivity
import android.net.Uri
import ru.terrakok.gitlabclient.toothpick.DI
import ru.terrakok.gitlabclient.ui.about.AboutFragment
import ru.terrakok.gitlabclient.ui.auth.AuthFlowFragment
import ru.terrakok.gitlabclient.ui.auth.AuthFragment
import ru.terrakok.gitlabclient.ui.drawer.DrawerFlowFragment
import ru.terrakok.gitlabclient.ui.global.BaseFragment
import ru.terrakok.gitlabclient.ui.global.StubFragment
import ru.terrakok.gitlabclient.ui.issue.IssueFlowFragment
import ru.terrakok.gitlabclient.ui.issue.IssueFragment
import ru.terrakok.gitlabclient.ui.issue.IssueInfoFragment
import ru.terrakok.gitlabclient.ui.issue.IssueNotesFragment
import ru.terrakok.gitlabclient.ui.libraries.LibrariesFragment
import ru.terrakok.gitlabclient.ui.main.MainFlowFragment
import ru.terrakok.gitlabclient.ui.mergerequest.MergeRequestFlowFragment
import ru.terrakok.gitlabclient.ui.mergerequest.MergeRequestFragment
import ru.terrakok.gitlabclient.ui.mergerequest.MergeRequestInfoFragment
import ru.terrakok.gitlabclient.ui.mergerequest.MergeRequestNotesFragment
import ru.terrakok.gitlabclient.ui.my.activity.MyEventsFragment
import ru.terrakok.gitlabclient.ui.my.issues.MyIssuesContainerFragment
import ru.terrakok.gitlabclient.ui.my.issues.MyIssuesFragment
import ru.terrakok.gitlabclient.ui.my.mergerequests.MyMergeRequestsContainerFragment
import ru.terrakok.gitlabclient.ui.my.mergerequests.MyMergeRequestsFragment
import ru.terrakok.gitlabclient.ui.my.todos.MyTodosContainerFragment
import ru.terrakok.gitlabclient.ui.my.todos.MyTodosFragment
import ru.terrakok.gitlabclient.ui.project.ProjectFlowFragment
import ru.terrakok.gitlabclient.ui.project.ProjectMainFlowFragment
import ru.terrakok.gitlabclient.ui.project.info.ProjectInfoFragment
import ru.terrakok.gitlabclient.ui.projects.ProjectsContainerFragment
import ru.terrakok.gitlabclient.ui.projects.ProjectsListFragment
import ru.terrakok.gitlabclient.ui.user.UserFlowFragment
import ru.terrakok.gitlabclient.ui.user.info.UserInfoFragment
/**
* @author Konstantin Tskhovrebov (aka terrakok) on 26.03.17.
*/
object Screens {
const val AUTH_FLOW = "auth flow"
const val AUTH_SCREEN = "auth screen"
const val DRAWER_FLOW = "drawer flow"
const val MAIN_FLOW = "main flow"
const val MAIN_SCREEN = "main screen"
const val MY_EVENTS_SCREEN = "my events screen"
const val MY_ISSUES_CONTAINER_SCREEN = "my issues container screen"
const val MY_ISSUES_SCREEN = "my issues screen"
const val MY_MR_CONTAINER_SCREEN = "my mr container screen"
const val MY_MR_SCREEN = "my mr screen"
const val MY_TODOS_CONTAINER_SCREEN = "my todo container screen"
const val MY_TODOS_SCREEN = "my todo screen"
const val PROJECTS_CONTAINER_SCREEN = "projects container screen"
const val PROJECTS_SCREEN = "projects screen"
const val ABOUT_SCREEN = "about screen"
const val APP_LIBRARIES_SCREEN = "app libraries screen"
const val APP_LIBRARIES_FLOW = "app libraries flow"
const val AUTH_FLOW = "auth flow"
const val AUTH_SCREEN = "auth screen"
const val PROJECT_FLOW = "project flow"
const val PROJECT_SCREEN = "project screen"
const val PROJECT_MAIN_FLOW = "project main flow"
const val PROJECT_INFO_SCREEN = "project info screen"
const val PROJECT_ISSUES_SCREEN = "project issues screen"
const val PROJECT_MR_SCREEN = "project mr screen"
const val USER_FLOW = "user flow"
const val USER_INFO_SCREEN = "user info screen"
const val MR_FLOW = "mr flow"
const val MR_SCREEN = "mr screen"
const val MR_INFO_SCREEN = "mr info screen"
const val MR_NOTES_SCREEN = "mr notes screen"
const val ISSUE_FLOW = "issue flow"
const val ISSUE_SCREEN = "issue screen"
const val ISSUE_INFO_SCREEN = "issue info screen"
const val ISSUE_NOTES_SCREEN = "issue notes screen"
fun getFlowIntent(context: Context, flowKey: String, data: Any?): Intent? = when (flowKey) {
Screens.AUTH_FLOW -> AuthActivity.getStartIntent(context)
Screens.MAIN_FLOW -> MainActivity.getStartIntent(context)
Screens.PROJECT_FLOW -> ProjectActivity.getStartIntent(data as Long, context)
Screens.USER_FLOW -> UserActivity.getStartIntent(data as Long, context)
Screens.MR_FLOW -> {
val (projectId, mrId) = data as Pair<Long, Long>
MergeRequestActivity.getStartIntent(projectId, mrId, context)
}
Screens.ISSUE_FLOW -> {
val (projectId, issueId) = data as Pair<Long, Long>
IssueActivity.getStartIntent(projectId, issueId, context)
}
const val EXTERNAL_BROWSER_FLOW = "external browser flow"
const val SHARE_FLOW = "share flow"
const val CALL_FLOW = "call flow"
fun createIntent(flowKey: String, data: Any?) = when (flowKey) {
Screens.EXTERNAL_BROWSER_FLOW -> Intent(Intent.ACTION_VIEW, Uri.parse(data as String))
Screens.SHARE_FLOW -> Intent.createChooser(
Intent(Intent.ACTION_SEND).apply {
putExtra(Intent.EXTRA_TEXT, data as String)
type = "text/plain"
},
data as String
)
Screens.CALL_FLOW -> Intent(Intent.ACTION_DIAL, Uri.parse("tel:$data"))
else -> null
}
fun createFragment(screenKey: String, data: Any? = null): BaseFragment? =
when (screenKey) {
Screens.DRAWER_FLOW -> DrawerFlowFragment()
Screens.MAIN_FLOW -> MainFlowFragment()
Screens.MY_EVENTS_SCREEN -> MyEventsFragment()
Screens.MY_ISSUES_CONTAINER_SCREEN -> MyIssuesContainerFragment()
Screens.MY_ISSUES_SCREEN -> {
val (createdByMe, onlyOpened) = data as Pair<Boolean, Boolean>
MyIssuesFragment.create(createdByMe, onlyOpened)
}
Screens.MY_MR_CONTAINER_SCREEN -> MyMergeRequestsContainerFragment()
Screens.MY_MR_SCREEN -> {
val (createdByMe, onlyOpened) = data as Pair<Boolean, Boolean>
MyMergeRequestsFragment.create(createdByMe, onlyOpened)
}
Screens.MY_TODOS_CONTAINER_SCREEN -> MyTodosContainerFragment()
Screens.MY_TODOS_SCREEN -> MyTodosFragment.create(data as Boolean)
Screens.PROJECTS_CONTAINER_SCREEN -> ProjectsContainerFragment()
Screens.PROJECTS_SCREEN -> ProjectsListFragment.create(data as Int)
Screens.ABOUT_SCREEN -> AboutFragment()
Screens.APP_LIBRARIES_FLOW -> LibrariesFragment()
Screens.AUTH_FLOW -> AuthFlowFragment()
Screens.AUTH_SCREEN -> AuthFragment()
Screens.USER_FLOW -> UserFlowFragment.create(data as Long)
Screens.USER_INFO_SCREEN -> UserInfoFragment()
Screens.PROJECT_FLOW -> ProjectFlowFragment.create(data as Long)
Screens.PROJECT_MAIN_FLOW -> ProjectMainFlowFragment()
Screens.PROJECT_INFO_SCREEN -> ProjectInfoFragment()
Screens.PROJECT_ISSUES_SCREEN -> StubFragment.create(DI.PROJECT_FLOW_SCOPE)
Screens.PROJECT_MR_SCREEN -> StubFragment.create(DI.PROJECT_FLOW_SCOPE)
Screens.MR_FLOW -> {
val (projectId, mrId) = data as Pair<Long, Long>
MergeRequestFlowFragment.create(projectId, mrId)
}
Screens.MR_SCREEN -> MergeRequestFragment()
Screens.MR_INFO_SCREEN -> MergeRequestInfoFragment()
Screens.MR_NOTES_SCREEN -> MergeRequestNotesFragment()
Screens.ISSUE_FLOW -> {
val (projectId, issueId) = data as Pair<Long, Long>
IssueFlowFragment.create(projectId, issueId)
}
Screens.ISSUE_SCREEN -> IssueFragment()
Screens.ISSUE_INFO_SCREEN -> IssueInfoFragment()
Screens.ISSUE_NOTES_SCREEN -> IssueNotesFragment()
else -> null
}
}
\ No newline at end of file
......@@ -3,10 +3,10 @@ package ru.terrakok.gitlabclient.entity
import com.google.gson.annotations.SerializedName
data class Assignee(
@SerializedName("id") val id: Long,
@SerializedName("state") val state: String?,
@SerializedName("name") val name: String,
@SerializedName("web_url") val webUrl: String?,
@SerializedName("avatar_url") val avatarUrl: String?,
@SerializedName("username") val username: String
@SerializedName("id") val id: Long,
@SerializedName("state") val state: String?,
@SerializedName("name") val name: String,
@SerializedName("web_url") val webUrl: String?,
@SerializedName("avatar_url") val avatarUrl: String?,
@SerializedName("username") val username: String
)
......@@ -3,10 +3,10 @@ package ru.terrakok.gitlabclient.entity
import com.google.gson.annotations.SerializedName
data class Author(
@SerializedName("id") val id: Long,
@SerializedName("state") val state: String?,
@SerializedName("web_url") val webUrl: String?,
@SerializedName("name") val name: String,
@SerializedName("avatar_url") val avatarUrl: String?,
@SerializedName("username") val username: String
@SerializedName("id") val id: Long,
@SerializedName("state") val state: String?,
@SerializedName("web_url") val webUrl: String?,
@SerializedName("name") val name: String,
@SerializedName("avatar_url") val avatarUrl: String?,
@SerializedName("username") val username: String
)
......@@ -6,13 +6,13 @@ import com.google.gson.annotations.SerializedName
* @author Konstantin Tskhovrebov (aka terrakok) on 27.04.17.
*/
data class File(
@SerializedName("file_name") val name: String,
@SerializedName("file_path") val path: String,
@SerializedName("size") val size: Long,
@SerializedName("encoding") val encoding: String,
@SerializedName("content") val content: String,
@SerializedName("ref") val branch: String,
@SerializedName("blob_id") val blobId: String,
@SerializedName("commit_id") val commitId: String,
@SerializedName("last_commit_id") val lastCommitId: String
@SerializedName("file_name") val name: String,
@SerializedName("file_path") val path: String,
@SerializedName("size") val size: Long,
@SerializedName("encoding") val encoding: String,
@SerializedName("content") val content: String,
@SerializedName("ref") val branch: String,
@SerializedName("blob_id") val blobId: String,
@SerializedName("commit_id") val commitId: String,
@SerializedName("last_commit_id") val lastCommitId: String
)
\ No newline at end of file
......@@ -3,6 +3,6 @@ package ru.terrakok.gitlabclient.entity
import com.google.gson.annotations.SerializedName
data class GroupAccess(
@SerializedName("access_level") val accessLevel: Long,
@SerializedName("notification_level") val notificationLevel: Long
@SerializedName("access_level") val accessLevel: Long,
@SerializedName("notification_level") val notificationLevel: Long
)
......@@ -3,6 +3,6 @@ package ru.terrakok.gitlabclient.entity
import com.google.gson.annotations.SerializedName
data class Identity(
@SerializedName("provider") val provider: String,
@SerializedName("extern_uid") val externUid: String
@SerializedName("provider") val provider: String,
@SerializedName("extern_uid") val externUid: String
)
......@@ -6,8 +6,8 @@ import com.google.gson.annotations.SerializedName
* @author Eugene Shapovalov (CraggyHaggy). Date: 11.09.17
*/
data class Links(
@SerializedName("self") val self: String?,
@SerializedName("notes") val notes: String?,
@SerializedName("award_emoji") val awardEmoji: String?,
@SerializedName("project") val project: String?
@SerializedName("self") val self: String?,
@SerializedName("notes") val notes: String?,
@SerializedName("award_emoji") val awardEmoji: String?,
@SerializedName("project") val project: String?
)
\ No newline at end of file
......@@ -4,13 +4,13 @@ import com.google.gson.annotations.SerializedName
import org.threeten.bp.LocalDateTime
data class Milestone(
@SerializedName("id") val id: Long,
@SerializedName("iid") val iid: Long,
@SerializedName("project_id") val projectId: Long,
@SerializedName("description") val description: String?,
@SerializedName("state") val state: String?,
@SerializedName("due_date") val dueDate: String?,
@SerializedName("created_at") val createdAt: LocalDateTime?,
@SerializedName("title") val title: String?,
@SerializedName("updated_at") val updatedAt: String?
@SerializedName("id") val id: Long,
@SerializedName("iid") val iid: Long,
@SerializedName("project_id") val projectId: Long,
@SerializedName("description") val description: String?,
@SerializedName("state") val state: String?,
@SerializedName("due_date") val dueDate: String?,
@SerializedName("created_at") val createdAt: LocalDateTime?,
@SerializedName("title") val title: String?,
@SerializedName("updated_at") val updatedAt: String?
)
......@@ -3,9 +3,9 @@ package ru.terrakok.gitlabclient.entity
import com.google.gson.annotations.SerializedName
data class Namespace(
@SerializedName("id") val id: Long,
@SerializedName("name") val name: String?,
@SerializedName("path") val path: String?,
@SerializedName("kind") val kind: String?,
@SerializedName("full_path") val fullPath: String?
@SerializedName("id") val id: Long,
@SerializedName("name") val name: String?,
@SerializedName("path") val path: String?,
@SerializedName("kind") val kind: String?,
@SerializedName("full_path") val fullPath: String?
)
......@@ -5,13 +5,13 @@ import org.threeten.bp.LocalDateTime
import ru.terrakok.gitlabclient.entity.event.EventTargetType
data class Note(
@SerializedName("id") val id: Long,
@SerializedName(