Merge pull request #27 from msfjarvis/comments

Add comment open action and cleanup unused code
This commit is contained in:
probot-auto-merge[bot] 2020-09-27 09:05:19 +00:00 committed by GitHub
commit 6867d84ca9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 38 additions and 152 deletions

View file

@ -11,11 +11,11 @@
android:label="@string/app_name"
android:roundIcon="@drawable/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Lobsters">
android:theme="@style/Theme.MaterialComponents">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Lobsters.NoActionBar">
android:theme="@style/Theme.MaterialComponents.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View file

@ -56,9 +56,11 @@ fun LobstersApp(
if (lastIndex == index) {
viewModel.getMorePosts()
}
LobstersItem(item) { post ->
urlLauncher.launch(post.url)
}
LobstersItem(
item,
linkOpenAction = { post -> urlLauncher.launch(post.url) },
commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) },
)
}
}
)

View file

@ -6,7 +6,6 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumnFor
@ -26,40 +25,42 @@ import dev.msfjarvis.lobsters.model.Submitter
fun LazyItemScope.LobstersItem(
post: LobstersPost,
modifier: Modifier = Modifier,
onClick: (LobstersPost) -> Unit,
linkOpenAction: (LobstersPost) -> Unit,
commentOpenAction: (LobstersPost) -> Unit,
) {
ListItem(
modifier = modifier.padding(horizontal = 8.dp)
.fillParentMaxWidth()
.clickable(onClick = { onClick.invoke(post) }),
.clickable(
onClick = { linkOpenAction.invoke(post) },
onLongClick = { commentOpenAction.invoke(post) }
),
text = {
Column {
Text(
text = post.title,
color = Color(0xFF7395D9),
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(top = 4.dp)
)
Row(
modifier = Modifier.padding(vertical = 8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
post.tags.forEach { tag ->
Text(
text = tag,
modifier = Modifier
.border(BorderStroke(1.dp, Color.Gray))
.background(Color(0xFFFFFCD7), RoundedCornerShape(4.dp))
.padding(vertical = 2.dp, horizontal = 4.dp),
color = Color.DarkGray,
)
}
Text(
text = post.title,
color = Color(0xFF7395D9),
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(top = 4.dp)
)
Row(
modifier = Modifier.padding(vertical = 8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
post.tags.take(4).forEach { tag ->
Text(
text = tag,
modifier = Modifier
.border(BorderStroke(1.dp, Color.Gray))
.background(Color(0xFFFFFCD7), RoundedCornerShape(4.dp))
.padding(vertical = 2.dp, horizontal = 4.dp),
color = Color.DarkGray,
)
}
Text(
text = "submitted by ${post.submitterUser.username}",
modifier = Modifier.padding(bottom = 4.dp),
)
}
Text(
text = "submitted by ${post.submitterUser.username}",
modifier = Modifier.padding(bottom = 4.dp),
)
}
)
}
@ -95,7 +96,7 @@ fun PreviewLobstersItem() {
)
LobstersTheme {
LazyColumnFor(items = listOf(post)) { item ->
LobstersItem(post = item, onClick = {})
LobstersItem(post = item, linkOpenAction = {}, commentOpenAction = {})
}
}
}
}

View file

@ -1,17 +0,0 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Lobsters" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/black</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:windowLightStatusBar">false</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>

View file

@ -1,26 +0,0 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Lobsters" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryVariant">@color/white</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:windowLightStatusBar">true</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.Lobsters.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.Lobsters.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.Lobsters.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>

View file

@ -1,34 +0,0 @@
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dev.msfjarvis.lobsters.data.source
import androidx.room.TypeConverter
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
object DateTimeTypeConverters {
@TypeConverter
@JvmStatic
fun toLocalDateTime(value: String?): LocalDateTime? {
return value?.let { LocalDateTime.parse(value) }
}
@TypeConverter
@JvmStatic
fun fromLocalDateTime(value: LocalDateTime?): String? {
return value?.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
}
}

View file

@ -2,10 +2,6 @@ package dev.msfjarvis.lobsters.data.source
import androidx.room.TypeConverter
import com.squareup.moshi.Moshi
import dev.msfjarvis.lobsters.model.KeybaseSignature
import dev.msfjarvis.lobsters.model.KeybaseSignatureJsonAdapter
import dev.msfjarvis.lobsters.model.LobstersPost
import dev.msfjarvis.lobsters.model.LobstersPostJsonAdapter
import dev.msfjarvis.lobsters.model.Submitter
import dev.msfjarvis.lobsters.model.SubmitterJsonAdapter
@ -25,30 +21,6 @@ object LobstersApiTypeConverters {
return value?.let { SubmitterJsonAdapter(moshi).toJson(value) }
}
@TypeConverter
@JvmStatic
fun toKeybaseSignature(value: String?): KeybaseSignature? {
return value?.let { KeybaseSignatureJsonAdapter(moshi).fromJson(value) }
}
@TypeConverter
@JvmStatic
fun fromKeybaseSignature(value: KeybaseSignature?): String? {
return value?.let { KeybaseSignatureJsonAdapter(moshi).toJson(value) }
}
@TypeConverter
@JvmStatic
fun toLobstersPost(value: String?): LobstersPost? {
return value?.let { LobstersPostJsonAdapter(moshi).fromJson(value) }
}
@TypeConverter
@JvmStatic
fun fromLobstersPost(value: LobstersPost?): String? {
return value?.let { LobstersPostJsonAdapter(moshi).toJson(value) }
}
@TypeConverter
@JvmStatic
fun toTagList(value: String?): List<String>? {

View file

@ -4,7 +4,6 @@ import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import dev.msfjarvis.lobsters.data.model.LobstersEntity
import dev.msfjarvis.lobsters.model.LobstersPost
@Database(
entities = [
@ -15,7 +14,6 @@ import dev.msfjarvis.lobsters.model.LobstersPost
)
@TypeConverters(
LobstersApiTypeConverters::class,
DateTimeTypeConverters::class,
)
abstract class PostsDatabase : RoomDatabase() {
abstract fun postsDao(): PostsDao