Skip to content

Commit 8ac8d1e

Browse files
authored
Merge pull request #32 from umbum/develop
Release v1.0.0
2 parents 77729a8 + f15619f commit 8ac8d1e

File tree

15 files changed

+86
-51
lines changed

15 files changed

+86
-51
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@
77
/build
88
/captures
99
.externalNativeBuild
10-
.idea
10+
.idea
11+
gradle.properties
12+
*.keystore

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ dist: trusty
33
android:
44
components:
55
- build-tools-28.0.3
6-
- android-26
6+
- android-28
77
- extra
88

99
script:

app/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ buildProperties {
1818
}
1919

2020
android {
21-
compileSdkVersion 26
21+
compileSdkVersion 28
2222
buildToolsVersion "28.0.3"
2323
defaultConfig {
2424
applicationId "com.tistory.umbum.github_issue_widget_app"
2525
minSdkVersion 21
26-
targetSdkVersion 26
26+
targetSdkVersion 28
2727
versionCode 1
2828
versionName "1.0"
2929
buildConfigString "CLIENT_SECRET", (buildProperties.secrets['github_client_secret'] | buildProperties.notThere['github_client_secret']).string
@@ -33,7 +33,7 @@ android {
3333
}
3434
signingConfigs {
3535
release {
36-
storeFile file("/Users/umbum/Untitled")
36+
storeFile file("github_issue_widget.keystore")
3737
storePassword((buildProperties.secrets['android_store_password'] | buildProperties.notThere['android_store_password']).string)
3838
keyAlias((buildProperties.secrets['android_key_alias'] | buildProperties.notThere['android_key_alias']).string)
3939
keyPassword((buildProperties.secrets['android_store_password'] | buildProperties.notThere['android_store_password']).string)
@@ -54,10 +54,10 @@ android {
5454

5555
dependencies {
5656
implementation fileTree(dir: 'libs', include: ['*.jar'])
57-
implementation 'com.android.support:appcompat-v7:26.1.0'
57+
implementation 'com.android.support:appcompat-v7:28.0.0'
5858
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
59-
implementation 'com.android.support:support-v4:26.1.0'
60-
implementation 'com.android.support:design:26.1.0'
59+
implementation 'com.android.support:support-v4:28.0.0'
60+
implementation 'com.android.support:design:28.0.0'
6161
testImplementation 'junit:junit:4.12'
6262
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
6363
exclude group: 'com.android.support', module: 'support-annotations'
@@ -66,8 +66,8 @@ dependencies {
6666
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
6767
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
6868
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
69-
implementation "com.android.support:customtabs:26.1.0"
70-
implementation "com.android.support:recyclerview-v7:26.1.0"
69+
implementation "com.android.support:customtabs:28.0.0"
70+
implementation "com.android.support:recyclerview-v7:28.0.0"
7171
kapt "com.android.databinding:compiler:$android_plugin_version"
7272
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
7373
implementation "io.reactivex.rxjava2:rxjava:2.2.10"

app/src/main/java/com/tistory/umbum/github_issue_widget_app/Constants.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.tistory.umbum.github_issue_widget_app
22

3-
const val DBG_TAG = "UMBUMDBG"
43
const val CLIENT_ID = BuildConfig.CLIENT_ID
54
const val CLIENT_SECRET = BuildConfig.CLIENT_SECRET
65
const val REDIRECT_URI = BuildConfig.REDIRECT_URI

app/src/main/java/com/tistory/umbum/github_issue_widget_app/data/local/preferences/UserSelectedRepository.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,26 @@ import com.tistory.umbum.github_issue_widget_app.ALL_ISSUES_TEXT
66

77
class UserSelectedRepository(private val context: Context) {
88
val TAG = this::class.java.simpleName
9+
val keyPrefix = "selected_repo_for_id"
910

1011
fun getSelectedRepoPath(id: Int) : String = context.applicationContext
1112
.getSharedPreferences("SETTINGS", Context.MODE_PRIVATE)
12-
.getString("selected_repo_for_id${id}", ALL_ISSUES_TEXT)!!
13+
.getString("${keyPrefix}${id}", ALL_ISSUES_TEXT)!!
1314

1415
fun setSelectedRepoPath(id: Int, repoPath: String) {
1516
context.applicationContext
1617
.getSharedPreferences("SETTINGS", Context.MODE_PRIVATE)
1718
.edit()
18-
.putString("selected_repo_for_id${id}", repoPath)
19+
.putString("${keyPrefix}${id}", repoPath)
1920
.apply()
20-
Log.d(TAG, "[save] selected_repo_for_id${id} : ${repoPath}")
21+
Log.d(TAG, "[save] ${keyPrefix}${id} : ${repoPath}")
2122
}
2223

24+
fun removeSelectedRepoPath(id: Int) {
25+
context.applicationContext
26+
.getSharedPreferences("SETTINGS", Context.MODE_PRIVATE)
27+
.edit()
28+
.remove("${keyPrefix}${id}")
29+
.apply()
30+
}
2331
}

app/src/main/java/com/tistory/umbum/github_issue_widget_app/ui/reposelect/BindingAdapters.kt renamed to app/src/main/java/com/tistory/umbum/github_issue_widget_app/ui/BindingAdapters.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.tistory.umbum.github_issue_widget_app.ui.reposelect
1+
package com.tistory.umbum.github_issue_widget_app.ui
22

33
import android.databinding.BindingAdapter
44
import android.support.v7.widget.RecyclerView

app/src/main/java/com/tistory/umbum/github_issue_widget_app/ui/login/OAuthLoginActivity.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,18 @@ package com.tistory.umbum.github_issue_widget_app.ui.login
33
import android.appwidget.AppWidgetManager
44
import android.arch.lifecycle.Observer
55
import android.arch.lifecycle.ViewModelProviders
6+
import android.content.ComponentName
7+
import android.content.Context
68
import android.content.Intent
79
import android.net.Uri
810
import android.os.Bundle
911
import android.support.v7.app.AppCompatActivity
1012
import android.util.Log
1113
import android.widget.Toast
1214
import com.tistory.umbum.github_issue_widget_app.CLIENT_ID
13-
import com.tistory.umbum.github_issue_widget_app.DBG_TAG
1415
import com.tistory.umbum.github_issue_widget_app.REDIRECT_URI
1516
import com.tistory.umbum.github_issue_widget_app.ui.widget.IssueWidget
1617
import com.tistory.umbum.github_issue_widget_app.util.openCustomTab
17-
import android.content.ComponentName
18-
import android.content.Context
1918

2019

2120
/**
@@ -24,6 +23,8 @@ import android.content.Context
2423
* 그냥 OAuthLoginActivity onCreate하자 마자 CCT로 OAuth 로그인하도록 넘어가게 구성했다.
2524
*/
2625
class OAuthLoginActivity : AppCompatActivity() {
26+
val TAG = this::class.java.simpleName
27+
2728
private val viewModel: OAuthLoginViewModel by lazy {
2829
ViewModelProviders
2930
.of(this, OAuthLoginViewModelFactory(this.application))
@@ -51,7 +52,7 @@ class OAuthLoginActivity : AppCompatActivity() {
5152
override fun onResume() {
5253
super.onResume()
5354
val intent = getIntent()
54-
Log.d(DBG_TAG, "OAuthLoginActivity.onResume: intent is ${intent?.action}")
55+
Log.d(TAG, "OAuthLoginActivity.onResume: intent is ${intent?.action}")
5556
}
5657

5758
/**
@@ -81,10 +82,10 @@ class OAuthLoginActivity : AppCompatActivity() {
8182
finish()
8283
})
8384
} else {
84-
Log.d(DBG_TAG, "OAuthLoginActivity.onNewIntent: intent.data or getQueryParameter('code') is null")
85+
Log.d(TAG, "OAuthLoginActivity.onNewIntent: intent.data or getQueryParameter('code') is null")
8586
}
8687
} else {
87-
Log.d(DBG_TAG, "OAuthLoginActivity.onNewIntent: intent is ${intent?.action}")
88+
Log.d(TAG, "OAuthLoginActivity.onNewIntent: intent is ${intent?.action}")
8889
}
8990
}
9091

app/src/main/java/com/tistory/umbum/github_issue_widget_app/ui/reposelect/RepoSelectActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import android.support.v7.app.AppCompatActivity
88
import android.support.v7.widget.DefaultItemAnimator
99
import android.support.v7.widget.LinearLayoutManager
1010
import android.util.Log
11-
import com.tistory.umbum.github_issue_widget_app.DBG_TAG
1211
import com.tistory.umbum.github_issue_widget_app.R
1312
import com.tistory.umbum.github_issue_widget_app.databinding.ActivityRepoSelectBinding
1413

1514
class RepoSelectActivity : AppCompatActivity() {
15+
val TAG = this::class.java.simpleName
1616

1717
private val viewModel: RepoSelectViewModel by lazy {
1818
ViewModelProviders
@@ -26,7 +26,7 @@ class RepoSelectActivity : AppCompatActivity() {
2626

2727
val appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID)
2828
if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
29-
Log.d(DBG_TAG, "RepoSelectActivity: appWidgetId is INVALID")
29+
Log.d(TAG, "RepoSelectActivity: appWidgetId is INVALID")
3030
return
3131
}
3232

app/src/main/java/com/tistory/umbum/github_issue_widget_app/ui/reposelect/RepoSelectViewModel.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ import android.arch.lifecycle.AndroidViewModel
55
import android.arch.lifecycle.ViewModel
66
import android.arch.lifecycle.ViewModelProvider
77
import android.databinding.ObservableArrayList
8+
import android.databinding.ObservableField
89
import android.util.Log
910
import android.widget.Toast
1011
import com.tistory.umbum.github_issue_widget_app.ALL_ISSUES_ID
1112
import com.tistory.umbum.github_issue_widget_app.ALL_ISSUES_TEXT
12-
import com.tistory.umbum.github_issue_widget_app.data.remote.api.GithubApiClient
13-
import com.tistory.umbum.github_issue_widget_app.data.model.RepoItem
1413
import com.tistory.umbum.github_issue_widget_app.data.local.preferences.AccessTokenRepository
14+
import com.tistory.umbum.github_issue_widget_app.data.model.RepoItem
15+
import com.tistory.umbum.github_issue_widget_app.data.remote.api.GithubApiClient
1516
import retrofit2.Call
1617
import retrofit2.Callback
1718
import retrofit2.Response
@@ -20,6 +21,7 @@ class RepoSelectViewModel(app: Application) : AndroidViewModel(app) {
2021
private val TAG = this::class.java.simpleName
2122
private val accessTokenRepository = AccessTokenRepository(getApplication())
2223
val repoItems = ObservableArrayList<RepoItem>()
24+
val requestProgress = ObservableField<Boolean>()
2325

2426
init {
2527
requestRepos()
@@ -30,6 +32,8 @@ class RepoSelectViewModel(app: Application) : AndroidViewModel(app) {
3032
}
3133

3234
fun requestRepos() {
35+
repoItems.clear()
36+
requestProgress.set(true)
3337
val access_token = accessTokenRepository.accessToken
3438
if (access_token == null) {
3539
Log.d(TAG, "RepoSelectViewModel.requestRepos: accessToken is null")
@@ -41,19 +45,20 @@ class RepoSelectViewModel(app: Application) : AndroidViewModel(app) {
4145

4246
GithubApiClient.client.getMyRepos(token_string).enqueue(object : Callback<List<RepoItem>> {
4347
override fun onFailure(call: Call<List<RepoItem>>, t: Throwable) {
44-
Log.e(TAG, "onFailure: repoistory request fail", t)
48+
requestProgress.set(false)
49+
Log.e(TAG, "onFailure: github repository request fail", t)
4550
Toast.makeText(getApplication(), "Request for repository information failed.", Toast.LENGTH_LONG).show()
4651
}
4752

4853
override fun onResponse(call: Call<List<RepoItem>>, response: Response<List<RepoItem>>) {
54+
requestProgress.set(false)
4955
val repos = response.body()?.toMutableList()
5056
if (repos != null) {
51-
repos.add(0, allIssues)
52-
repoItems.clear()
57+
repoItems.add(allIssues)
5358
repoItems.addAll(repos)
5459
} else {
5560
Log.e(TAG, "onResponse: response.body() is null.")
56-
Toast.makeText(getApplication(), "Failed to get repository information.π", Toast.LENGTH_LONG).show()
61+
Toast.makeText(getApplication(), "Failed to get repository information.", Toast.LENGTH_LONG).show()
5762
}
5863
}
5964
})

app/src/main/java/com/tistory/umbum/github_issue_widget_app/ui/widget/IssueListService.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,14 @@ class IssueListFactory(val context: Context, val intent: Intent): RemoteViewsSer
114114

115115
override fun getCount(): Int {
116116
// 0..getCount()만큼 getViewAt()이 호출된다.
117-
Log.d(TAG, "IssueListFactory.getCount: return ${issueItems.size}")
118117
return issueItems.size
119118
}
120119

121120
override fun getViewTypeCount(): Int {
122-
// issue_item의 layout으로 2종류를 사용하니까, getViewTypeCount는 2를 리턴해야 한다.
123-
return 2
121+
return 2 // issue_item의 layout으로 2종류를 사용하고 있다.
124122
}
125123

126124
override fun onDestroy() {
127-
// In onDestroy() you should tear down anything that was setup for your data source,
128-
// eg. cursors, connections, etc.
125+
userSelectedRepository.removeSelectedRepoPath(appWidgetId);
129126
}
130127
}

0 commit comments

Comments
 (0)