Skip to content

Commit 48ad412

Browse files
committed
Comment feature
1 parent 4b9bde2 commit 48ad412

28 files changed

+433
-126
lines changed

android-Cavern.iml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<module external.linked.project.id="android-Cavern" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
2+
<module external.linked.project.id="android-Cavern" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
33
<component name="FacetManager">
44
<facet type="java-gradle" name="Java-Gradle">
55
<configuration>

app/app.iml

Lines changed: 24 additions & 23 deletions
Large diffs are not rendered by default.

app/build.gradle

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ android {
1515
applicationId "tech.stoneapp.secminhr.cavern"
1616
minSdkVersion 19
1717
targetSdkVersion 28
18-
versionCode 8
19-
versionName "3.2.0"
18+
versionCode 12
19+
versionName "3.3.1"
2020
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2121
vectorDrawables.useSupportLibrary = true
2222
multiDexEnabled true
@@ -43,6 +43,11 @@ android {
4343
sourceCompatibility 1.8
4444
targetCompatibility 1.8
4545
}
46+
47+
kotlinOptions {
48+
jvmTarget = JavaVersion.VERSION_1_8.toString()
49+
}
50+
4651
testOptions {
4752
unitTests {
4853
includeAndroidResources = true
@@ -77,6 +82,7 @@ dependencies {
7782
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.0-rc02'
7883
implementation 'androidx.navigation:navigation-ui-ktx:2.2.0-rc02'
7984
implementation 'androidx.core:core-ktx:1.1.0'
85+
implementation "androidx.fragment:fragment-ktx:1.2.0"
8086
implementation "androidx.paging:paging-runtime-ktx:2.1.0"
8187

8288
implementation "ru.noties.markwon:core:$markwon_version"

app/release/Cavern.apk

97.3 KB
Binary file not shown.

app/release/output.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":7,"versionName":"3.1.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
1+
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":12,"versionName":"3.3.1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release","dirName":""},"path":"app-release.apk","properties":{}}]

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="tech.stoneapp.secminhr.cavern">
44

5+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
56
<uses-permission android:name="android.permission.INTERNET"/>
67

78
<application
@@ -24,6 +25,12 @@
2425
android:name=".editor.EditorActivity"
2526
android:theme="@style/NoActionBarAppCompatTheme">
2627
</activity>
28+
<activity
29+
android:name=".editor.NewArticleActivity"
30+
android:theme="@style/NoActionBarAppCompatTheme" />
31+
<activity
32+
android:name=".editor.NewCommentActivity"
33+
android:theme="@style/NoActionBarAppCompatTheme" />
2734

2835
<meta-data
2936
android:name="firebase_crashlytics_collection_enabled"

app/src/main/java/tech/stoneapp/secminhr/cavern/activity/MainActivity.kt

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tech.stoneapp.secminhr.cavern.activity
22

3+
import android.content.Context
4+
import android.net.ConnectivityManager
35
import android.os.Bundle
46
import android.preference.PreferenceManager
57
import androidx.appcompat.app.AppCompatActivity
@@ -9,8 +11,10 @@ import androidx.databinding.ObservableBoolean
911
import androidx.lifecycle.ViewModelProviders
1012
import androidx.navigation.fragment.findNavController
1113
import androidx.navigation.ui.NavigationUI
14+
import com.google.firebase.remoteconfig.FirebaseRemoteConfig
1215
import kotlinx.android.synthetic.main.activity_main.*
1316
import stoneapp.secminhr.cavern.api.Cavern
17+
import tech.stoneapp.secminhr.cavern.BuildConfig
1418
import tech.stoneapp.secminhr.cavern.R
1519
import kotlin.concurrent.thread
1620

@@ -26,21 +30,40 @@ class MainActivity : AppCompatActivity(), LoggedUserModelHolder {
2630
navigation.menu.findItem(R.id.navigation_user).isVisible = hasUserLoggedIn.get()
2731
navigation.menu.findItem(R.id.navigation_login).isVisible = !hasUserLoggedIn.get()
2832
navigation.selectedItemId =
29-
if(hasUserLoggedIn.get())
30-
R.id.navigation_user
31-
else R.id.navigation_login
33+
if(hasUserLoggedIn.get()) R.id.navigation_user else R.id.navigation_login
3234
invalidateOptionsMenu()
3335

3436
PreferenceManager.getDefaultSharedPreferences(this@MainActivity).edit {
3537
putBoolean("article_outdated", true)
3638
}
3739
}
3840
}
39-
4041
}
4142

4243
override fun onCreate(savedInstanceState: Bundle?) {
4344
super.onCreate(savedInstanceState)
45+
val configFinished = intent.getBooleanExtra("remoteConfig", false)
46+
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
47+
val isConnected = cm.activeNetworkInfo?.isConnected ?: false
48+
if(!isConnected) {
49+
setContentView(R.layout.activity_main_no_connection)
50+
} else {
51+
if(!configFinished) {
52+
val remoteConfig = FirebaseRemoteConfig.getInstance()
53+
val expireTime = if(BuildConfig.DEBUG) 0L else 43200L
54+
remoteConfig.fetch(expireTime).addOnCompleteListener {
55+
if (it.isSuccessful) {
56+
remoteConfig.activate()
57+
showContent()
58+
}
59+
}
60+
} else {
61+
showContent()
62+
}
63+
}
64+
}
65+
66+
private fun showContent() {
4467
setContentView(R.layout.activity_main)
4568
NavigationUI.setupWithNavController(navigation, container.findNavController())
4669

app/src/main/java/tech/stoneapp/secminhr/cavern/activity/StartActivity.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,15 @@ class StartActivity : AppCompatActivity() {
4444
remoteConfig.fetch(expireTime).addOnCompleteListener {
4545
if (it.isSuccessful) {
4646
remoteConfig.activate()
47-
startActivity(Intent(this@StartActivity, MainActivity::class.java))
47+
val intent = Intent(this@StartActivity, MainActivity::class.java)
48+
intent.putExtra("remoteConfig", true)
49+
startActivity(intent)
4850
} else {
4951
Log.e("application", it.exception.toString())
5052
it.exception?.let { _ ->
51-
Toast.makeText(this@StartActivity, "We are not able to get info online, please connect your device to the internet", Toast.LENGTH_LONG).show()
53+
val intent = Intent(this@StartActivity, MainActivity::class.java)
54+
intent.putExtra("remoteConfig", false)
55+
startActivity(intent)
5256
}
5357
}
5458
finish()

app/src/main/java/tech/stoneapp/secminhr/cavern/articlecontent/ArticleContentFragment.kt

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package tech.stoneapp.secminhr.cavern.articlecontent
22

3+
import android.content.Intent
34
import android.os.Bundle
45
import android.preference.PreferenceManager
56
import android.util.Log
67
import android.view.LayoutInflater
78
import android.view.View
89
import android.view.ViewGroup
10+
import android.widget.Button
911
import android.widget.Toast
1012
import androidx.core.content.edit
1113
import androidx.fragment.app.Fragment
@@ -17,7 +19,9 @@ import stoneapp.secminhr.cavern.cavernError.NoConnectionError
1719
import stoneapp.secminhr.cavern.cavernError.NotExistsError
1820
import tech.stoneapp.secminhr.cavern.R
1921
import tech.stoneapp.secminhr.cavern.accountInfo.bottomAuthorDialog.BottomAuthorDialog
22+
import tech.stoneapp.secminhr.cavern.activity.MainActivity
2023
import tech.stoneapp.secminhr.cavern.databinding.FragmentArticleContentBinding
24+
import tech.stoneapp.secminhr.cavern.editor.NewCommentActivity
2125

2226
class ArticleContentFragment : Fragment() {
2327

@@ -107,7 +111,16 @@ class ArticleContentFragment : Fragment() {
107111
}
108112
}
109113
if(commentListView.headerViewsCount < 1) {
110-
commentListView.addHeaderView(layoutInflater.inflate(R.layout.comment_list_header, null))
114+
val header = layoutInflater.inflate(R.layout.comment_list_header, null)
115+
val leaveCommentButton = header.findViewById<Button>(R.id.commentButton)
116+
val logged = (activity as MainActivity).hasUserLoggedIn.get()
117+
leaveCommentButton.isEnabled = logged
118+
leaveCommentButton.setOnClickListener {
119+
val intent = Intent(activity, NewCommentActivity::class.java)
120+
intent.putExtra("pid", pid)
121+
startActivity(intent)
122+
}
123+
commentListView.addHeaderView(header)
111124
}
112125
likeButton.setOnClickListener {
113126
viewModel.like(pid, errorHandler = {
@@ -125,6 +138,24 @@ class ArticleContentFragment : Fragment() {
125138
}
126139
}
127140

141+
override fun onResume() {
142+
super.onResume()
143+
val preference = PreferenceManager.getDefaultSharedPreferences(activity?.application)
144+
val needReloadComment = preference.getBoolean("comment_outdated", false)
145+
if(needReloadComment) {
146+
preference.edit {
147+
putBoolean("comment_outdated", false)
148+
}
149+
viewModel.getComments(pid) {
150+
Toast.makeText(context, it, Toast.LENGTH_SHORT).show()
151+
}.observe(this, Observer {
152+
adapter.clear()
153+
adapter.addAll(it.toMutableList())
154+
adapter.notifyDataSetChanged()
155+
})
156+
}
157+
}
158+
128159
private fun showUserDialog(username: String) {
129160
val bottomFragment = BottomAuthorDialog.newInstance(username)
130161
bottomFragment.show(fragmentManager!!, "Author")

app/src/main/java/tech/stoneapp/secminhr/cavern/articles/ArticleFragment.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ import stoneapp.secminhr.cavern.cavernObject.Account
2323
import stoneapp.secminhr.cavern.cavernObject.ArticlePreview
2424
import tech.stoneapp.secminhr.cavern.activity.MainActivity
2525
import tech.stoneapp.secminhr.cavern.databinding.ArticleFragmentBinding
26-
import tech.stoneapp.secminhr.cavern.editor.EditorActivity
27-
import tech.stoneapp.secminhr.cavern.editor.tools.Header1
26+
import tech.stoneapp.secminhr.cavern.editor.NewArticleActivity
2827

2928

3029
class ArticleFragment: Fragment() {
@@ -70,8 +69,7 @@ class ArticleFragment: Fragment() {
7069
this.userCanPost.set(canPost)
7170

7271
addArticleButton.setOnClickListener {
73-
val intent = Intent(activity, EditorActivity::class.java)
74-
intent.putExtra("tools", Header1::class.java)
72+
val intent = Intent(activity, NewArticleActivity::class.java)
7573
startActivity(intent)
7674
}
7775
}

0 commit comments

Comments
 (0)