Commit 0a3a846f authored by Konstantin Tskhovrebov's avatar Konstantin Tskhovrebov 🤖

Merge branch 'develop'

parents 7e1ec99e 913cbf0f
# Build files and folders
.gradle/
build/
keys/
# Properties
local.properties
# Idea
.idea/
!.idea/codeStyles
**/*.iml
# Mac OS
......
image: jangrewe/gitlab-ci-android
before_script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- export BUILD_NUMBER=$(git rev-list --count ${CI_BUILD_REF})
- export BUILD_COMMIT_SHA=${CI_COMMIT_SHA}
- chmod +x ./gradlew
cache:
key: ${CI_PROJECT_ID}
paths:
- .gradle/
stages:
- test
- build
unitTests:
stage: test
script:
- ./gradlew test
only:
- release
- master
build:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
name: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
paths:
- app/build/outputs/
only:
- develop
- release
- master
\ No newline at end of file
<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>
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>
\ No newline at end of file
This diff is collapsed.
# Gitfox
Gitfox is an Android client for Gitlab
Information for contributors on the [Wiki page](https://gitlab.com/terrakok/gitlab-client/wikis/home)
\ No newline at end of file
/build
google-services.json
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
apply from: '../ci.gradle'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
compileSdkVersion 28
buildToolsVersion '28.0.2'
defaultConfig {
applicationId "ru.terrakok.gitlabclient"
applicationId "com.gitlab.terrakok.gitfox"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
targetSdkVersion 28
versionName "1.0"
versionCode getBuildNumber()
buildConfigField "String", "VERSION_UID", '"' + getBuildUid() + '"'
buildConfigField "String", "APP_DESCRIPTION", '"Gitfox is an Android client for Gitlab."'
buildConfigField "String", "FEEDBACK_URL", '"https://gitlab.com/terrakok/gitlab-client/issues"'
buildConfigField "String", "APP_HOME_PAGE", '"https://gitlab.com/terrakok/gitlab-client"'
buildConfigField "String", "WEB_AUTH_USER_AGENT", '"gitfox_user_agent"'
buildConfigField "String", "ORIGIN_GITLAB_ENDPOINT", '"https://gitlab.com/"'
//todo: put prod value for release
buildConfigField "String", "OAUTH_APP_ID", '"808b7f51c6634294afd879edd75d5eaf55f1a75e7fe5bd91ca8b7140a5af639d"'
buildConfigField "String", "OAUTH_SECRET", '"a9dd39c8d2e781b65814007ca0f8b555d34f79b4d30c9356c38bb7ad9909c6f3"'
buildConfigField "String", "OAUTH_CALLBACK", '"app://gitlab.client/"'
multiDexEnabled true
javaCompileOptions {
annotationProcessorOptions {
arguments = [toothpick_registry_package_name: 'ru.terrakok.gitlabclient']
}
}
}
signingConfigs {
//todo put key params for release
prod {
storeFile file("./keys/play/key.jks")
storePassword "pass"
keyAlias "alias"
keyPassword "pass"
}
}
buildTypes {
debugPG {
initWith debug
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
versionNameSuffix ' debugPG'
}
release {
minifyEnabled false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.prod
}
}
}
ext {
supportLibraryVersion = '25.3.0'
supportLibraryVersion = "28.0.0-rc02"
moxyVersion = "1.4.6"
toothpickVersion = "1.0.6"
retrofitVersion = "2.2.0"
markwonVersion = "1.1.1"
}
dependencies {
//Support
compile "com.android.support:appcompat-v7:$supportLibraryVersion"
implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
implementation "com.android.support:design:$supportLibraryVersion"
implementation "com.android.support.constraint:constraint-layout:1.1.3"
implementation "com.android.support:cardview-v7:$supportLibraryVersion"
//Kotlin
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
//Log
implementation "com.jakewharton.timber:timber:4.5.1"
//MVP Moxy
kapt "com.arello-mobile:moxy-compiler:$moxyVersion"
implementation "com.arello-mobile:moxy-app-compat:$moxyVersion"
//Cicerone Navigation
implementation "ru.terrakok.cicerone:cicerone:3.0.0"
//DI
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.2"
//Retrofit
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
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.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: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.5.1'
//Date
implementation 'com.jakewharton.threetenabp:threetenabp:1.0.5'
//FlexBox Layout
implementation 'com.google.android:flexbox:1.0.0'
//Firebase
implementation 'com.google.firebase:firebase-core:16.0.3'
//Crashlytics
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
//JUnit
testImplementation "junit:junit:4.12"
//Mockito
testImplementation "org.mockito:mockito-core:2.8.9"
//Mockito Kotlin
testImplementation "com.nhaarman:mockito-kotlin-kt1.1:1.5.0"
}
configurations.all {
resolutionStrategy {
force "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
}
}
apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
......@@ -23,3 +23,10 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# We use ProGuard only for minify
-keep class ru.terrakok.** { *; }
-dontwarn com.roughike.bottombar.VerticalScrollingBehavior$ScrollDirection
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn org.joda.convert.*
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest package="ru.terrakok.gitlabclient"
xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="ru.terrakok.gitlabclient">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
android:supportsRtl="false"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
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>
......
[
{
"name": "Konstantin Tskhovrebov",
"avatarUrl": "https://assets.gitlab-static.net/uploads/-/system/user/avatar/62974/avatar.png",
"gitlabId": 62974,
"role": "main developer"
},
{
"name": "Eugene Shapovalov",
"avatarUrl": "https://assets.gitlab-static.net/uploads/-/system/user/avatar/1583723/avatar.png",
"gitlabId": 1583723,
"role": "main developer"
},
{
"name": "Ilyas Gaifullin",
"avatarUrl": "https://mir-s3-cdn-cf.behance.net/user/230/e0e22a1584077.581bca76bcad5.jpeg",
"role": "designer"
},
{
"name": "Vladimir Parfenov",
"avatarUrl": "https://assets.gitlab-static.net/uploads/-/system/user/avatar/1523697/avatar.png",
"gitlabId": 1523697,
"role": "developer"
},
{
"name": "Artur Badretdinov",
"avatarUrl": "https://secure.gravatar.com/avatar/b438c8b238c833812f6eadebce50063f?s=180&d=identicon",
"gitlabId": 559497,
"role": "developer"
},
{
"name": "Ilya Gulya",
"avatarUrl": "https://secure.gravatar.com/avatar/1d1e894eef93d49b58aa3b39230d94dc?s=180&d=identicon",
"gitlabId": 1446627,
"role": "developer"
},
{
"name": "Vitalii Dmitriev",
"avatarUrl": "https://assets.gitlab-static.net/uploads/-/system/user/avatar/1396844/avatar.png",
"gitlabId": 1396844,
"role": "developer"
},
{
"name": "Eugene Tereshkov",
"avatarUrl": "https://assets.gitlab-static.net/uploads/-/system/user/avatar/1601949/avatar.png",
"gitlabId": 1601949,
"role": "developer"
}
]
\ No newline at end of file
[
{
"name": "Google / Support Library",
"url": "https://developer.android.com/topic/libraries/support-library/index.html",
"license": "APACHE_2"
},
{
"name": "JetBrains / Kotlin",
"url": "https://github.com/JetBrains/kotlin",
"license": "APACHE_2"
},
{
"name": "Jake Wharton / Timber",
"url": "https://github.com/JakeWharton/timber",
"license": "APACHE_2"
},
{
"name": "Arello-Mobile / Moxy",
"url": "https://github.com/Arello-Mobile/Moxy",
"license": "MIT"
},
{
"name": "Terrakok / Cicerone",
"url": "https://github.com/terrakok/Cicerone",
"license": "MIT"
},
{
"name": "Stephane Nicolas / Toothpick",
"url": "https://github.com/stephanenicolas/toothpick",
"license": "APACHE_2"
},
{
"name": "Google / Gson",
"url": "https://github.com/google/gson",
"license": "APACHE_2"
},
{
"name": "Square / Retrofit",
"url": "https://github.com/square/retrofit",
"license": "APACHE_2"
},
{
"name": "ReactiveX / RxJava",
"url": "https://github.com/ReactiveX/RxJava",
"license": "APACHE_2"
},
{
"name": "Sockeqwe / AdapterDelegates",
"url": "https://github.com/sockeqwe/AdapterDelegates",
"license": "APACHE_2"
},
{
"name": "Bumptech / Glide",
"url": "https://github.com/bumptech/glide",
"license": "CUSTOM"
},
{
"name": "Commonsguy / CWAC AndDown",
"url": "https://github.com/commonsguy/cwac-anddown",
"license": "APACHE_2"
},
{
"name": "Roughike / BottomBar",
"url": "https://github.com/roughike/BottomBar",
"license": "APACHE_2"
},
{
"name": "Chrisjenx / Calligraphy",
"url": "https://github.com/chrisjenx/Calligraphy",
"license": "APACHE_2"
},
{
"name": "Airbnb / Lottie",
"url": "https://github.com/airbnb/lottie",
"license": "MIT"
},
{
"name": "JodaOrg / Joda-time",
"url": "https://github.com/JodaOrg/joda-time",
"license": "APACHE_2"
},
{
"name": "Google / Flexbox-layout",
"url": "https://github.com/google/flexbox-layout",
"license": "APACHE_2"
},