diff --git a/app/build.gradle b/app/build.gradle
index e44269a..08f4f88 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,6 +9,7 @@ plugins {
id 'androidx.navigation.safeargs.kotlin'
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
+ id 'com.google.android.gms.oss-licenses-plugin'
}
android {
@@ -73,7 +74,7 @@ dependencies {
// Material 3
- implementation "com.google.android.material:material:1.11.0"
+ implementation "com.google.android.material:material:1.12.0"
// Navigation
def nav_version = "2.7.7"
@@ -133,4 +134,7 @@ dependencies {
implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.firebase:firebase-analytics")
implementation("com.google.firebase:firebase-messaging")
+
+ // OSS screen
+ implementation 'com.google.android.gms:play-services-oss-licenses:17.1.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 41fab28..703092e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,6 +16,15 @@
android:theme="@style/Theme.Isolaatti"
android:usesCleartextTraffic="true"
tools:targetApi="31">
+
+
+
+
+
+
+ val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ viewBinding.homeDrawer.getHeaderView(0).updatePadding(top = systemBarsInsets.top)
+ insets
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/home/ui/HomeActivity.kt b/app/src/main/java/com/isolaatti/home/ui/HomeActivity.kt
index 9fe8c59..a2515c2 100644
--- a/app/src/main/java/com/isolaatti/home/ui/HomeActivity.kt
+++ b/app/src/main/java/com/isolaatti/home/ui/HomeActivity.kt
@@ -6,6 +6,7 @@ import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.view.Menu
+import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
@@ -36,6 +37,7 @@ class HomeActivity : IsolaattiBaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
viewBinding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
diff --git a/app/src/main/java/com/isolaatti/images/common/data/dao/ImagesDraftsDao.kt b/app/src/main/java/com/isolaatti/images/common/data/dao/ImagesDraftsDao.kt
new file mode 100644
index 0000000..8c38f21
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/images/common/data/dao/ImagesDraftsDao.kt
@@ -0,0 +1,19 @@
+package com.isolaatti.images.common.data.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.Query
+import com.isolaatti.images.common.data.entity.ImageDraftEntity
+
+@Dao
+interface ImagesDraftsDao {
+
+ @Query("SELECT * FROM image_drafts WHERE postId IS NULL")
+ fun getDetachedImages(): List
+
+ @Insert
+ fun insertImageDraft(imageDraftEntity: ImageDraftEntity)
+
+ @Query("DELETE FROM image_drafts WHERE id = :id")
+ fun deleteById(id: Long)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/common/data/entity/ImageDraftEntity.kt b/app/src/main/java/com/isolaatti/images/common/data/entity/ImageDraftEntity.kt
new file mode 100644
index 0000000..23c82fe
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/images/common/data/entity/ImageDraftEntity.kt
@@ -0,0 +1,12 @@
+package com.isolaatti.images.common.data.entity
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "image_drafts")
+data class ImageDraftEntity(
+ @PrimaryKey(autoGenerate = true)
+ val id: Long,
+ val uri: String,
+ val postId: Long? = null
+)
diff --git a/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt b/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt
index bcea37b..64ba1a6 100644
--- a/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt
+++ b/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt
@@ -51,9 +51,6 @@ class ImageMakerActivity : IsolaattiBaseActivity() {
binding.uploadPhotoFab.setOnClickListener {
viewModel.uploadPicture()
}
- binding.textImageName.editText?.doOnTextChanged { text, _, _, _ ->
- viewModel.name = text.toString()
- }
binding.toolbar.setNavigationOnClickListener {
showExitConfirmationDialog()
}
@@ -66,12 +63,10 @@ class ImageMakerActivity : IsolaattiBaseActivity() {
errorViewModel.error.value = it.errorType
binding.progressBarLoading.visibility = View.GONE
binding.uploadPhotoFab.visibility = View.VISIBLE
- binding.textImageName.isEnabled = true
}
is Resource.Loading -> {
binding.progressBarLoading.visibility = View.VISIBLE
binding.uploadPhotoFab.visibility = View.INVISIBLE
- binding.textImageName.isEnabled = false
}
is Resource.Success -> {
binding.progressBarLoading.visibility = View.GONE
diff --git a/app/src/main/java/com/isolaatti/posting/posts/domain/entity/Post.kt b/app/src/main/java/com/isolaatti/posting/posts/domain/entity/Post.kt
index df720b5..da8c6e3 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/domain/entity/Post.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/domain/entity/Post.kt
@@ -4,8 +4,8 @@ import android.os.Parcel
import android.os.Parcelable
import com.isolaatti.audio.common.domain.Audio
import com.isolaatti.common.Ownable
+import com.isolaatti.common.hashtagRegex
import com.isolaatti.posting.posts.data.remote.FeedDto
-import java.io.Serializable
data class Post(
val id: Long,
@@ -108,4 +108,8 @@ data class Post(
override fun describeContents(): Int {
return 0
}
+
+ val hashtagsSpans by lazy {
+ hashtagRegex.findAll(textContent).map { it.range }.toList()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt b/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt
index 35451e5..c814e26 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt
@@ -1,6 +1,9 @@
package com.isolaatti.posting.posts.presentation
import android.annotation.SuppressLint
+import android.text.SpannableString
+import android.text.method.LinkMovementMethod
+import android.text.style.ClickableSpan
import android.util.Log
import android.view.LayoutInflater
import android.view.View
@@ -8,7 +11,7 @@ import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.content.res.AppCompatResources
-import androidx.core.content.res.ResourcesCompat
+import androidx.core.text.set
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import coil.load
@@ -21,10 +24,9 @@ import com.isolaatti.common.OnUserInteractedWithPostCallback
import com.isolaatti.databinding.PostLayoutBinding
import com.isolaatti.posting.posts.domain.entity.Post
import com.isolaatti.utils.UrlGen.userProfileImage
-import io.noties.markwon.Markwon
+
class PostsRecyclerViewAdapter (
- private val markwon: Markwon,
private val callback: OnUserInteractedWithPostCallback
) : RecyclerView.Adapter(){
private var postList: List? = null
@@ -102,7 +104,17 @@ class PostsRecyclerViewAdapter (
dateTextView.text = post.date
val content: TextView = itemView.findViewById(R.id.post_content)
- markwon.setMarkdown(content, post.textContent)
+ content.movementMethod = LinkMovementMethod.getInstance()
+ val spannableString = SpannableString(post.textContent).apply {
+ post.hashtagsSpans.forEach {
+ set(it.first, it.last + 1, object: ClickableSpan() {
+ override fun onClick(widget: View) {
+ callback.hashtagClicked(post.textContent.substring(it.first + 1, it.last + 1))
+ }
+ })
+ }
+ }
+ content.text = spannableString
itemBinding.likeButton.isEnabled = true
diff --git a/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostActivity.kt b/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostActivity.kt
index d4deea9..cca1526 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostActivity.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostActivity.kt
@@ -88,7 +88,7 @@ class CreatePostActivity : IsolaattiBaseActivity() {
TabLayoutMediator(binding.tabs, binding.pager) { tab, position ->
when(position) {
- 0 -> tab.setText(R.string.markdown)
+ 0 -> tab.setText(R.string.create_a_new_discussion)
1 -> tab.setText(R.string.preview)
}
}.attach()
diff --git a/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostFragmentStateAdapter.kt b/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostFragmentStateAdapter.kt
index 9deeee9..7e909b6 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostFragmentStateAdapter.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/ui/CreatePostFragmentStateAdapter.kt
@@ -2,7 +2,6 @@ package com.isolaatti.posting.posts.ui
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
-import androidx.fragment.app.FragmentManager
import androidx.viewpager2.adapter.FragmentStateAdapter
class CreatePostFragmentStateAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
@@ -12,7 +11,7 @@ class CreatePostFragmentStateAdapter(fragmentActivity: FragmentActivity) : Fragm
override fun createFragment(position: Int): Fragment {
return if(position == 0) {
- MarkdownEditingFragment()
+ PostEditingFragment()
} else {
MarkdownPreviewFragment()
}
diff --git a/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt b/app/src/main/java/com/isolaatti/posting/posts/ui/PostEditingFragment.kt
similarity index 96%
rename from app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt
rename to app/src/main/java/com/isolaatti/posting/posts/ui/PostEditingFragment.kt
index 74ea448..c88c3bb 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/ui/PostEditingFragment.kt
@@ -15,7 +15,6 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import com.isolaatti.R
-import com.isolaatti.audio.audio_selector.ui.AudioSelectorActivity
import com.isolaatti.audio.audio_selector.ui.AudioSelectorContract
import com.isolaatti.audio.common.domain.Audio
import com.isolaatti.audio.common.domain.Playable
@@ -28,9 +27,9 @@ import com.isolaatti.posting.link_creator.presentation.LinkCreatorViewModel
import com.isolaatti.posting.link_creator.ui.LinkCreatorFragment
import com.isolaatti.posting.posts.presentation.CreatePostViewModel
-class MarkdownEditingFragment : Fragment(){
+class PostEditingFragment : Fragment(){
companion object {
- const val LOG_TAG = "MarkdownEditingFragment"
+ const val LOG_TAG = "PostEditingFragment"
}
@@ -48,7 +47,7 @@ class MarkdownEditingFragment : Fragment(){
}
private val imageChooserLauncher = registerForActivityResult(ImageChooserContract()) { image ->
- Log.d("MarkdownEditingFragment", "${image?.markdown}")
+ Log.d(LOG_TAG, "${image?.markdown}")
if(image != null) {
viewModel.content += "\n\n ${image.markdown}"
diff --git a/app/src/main/java/com/isolaatti/posting/posts/ui/PostListingFragment.kt b/app/src/main/java/com/isolaatti/posting/posts/ui/PostListingFragment.kt
index 39e248e..c1667a0 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/ui/PostListingFragment.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/ui/PostListingFragment.kt
@@ -27,6 +27,7 @@ import com.isolaatti.common.options_bottom_sheet.domain.Options
import com.isolaatti.common.options_bottom_sheet.presentation.BottomSheetPostOptionsViewModel
import com.isolaatti.common.options_bottom_sheet.ui.BottomSheetPostOptionsFragment
import com.isolaatti.databinding.FragmentPostListingBinding
+import com.isolaatti.hashtags.ui.HashtagsPostsActivity
import com.isolaatti.home.ui.FeedFragment
import com.isolaatti.posting.comments.ui.BottomSheetPostComments
import com.isolaatti.posting.posts.domain.entity.Post
@@ -124,7 +125,7 @@ class PostListingFragment : Fragment(), OnUserInteractedWithPostCallback {
.usePlugin(CoilImagesPlugin.create(requireContext(), CoilImageLoader.imageLoader))
.usePlugin(LinkifyPlugin.create())
.build()
- adapter = PostsRecyclerViewAdapter(markwon, this)
+ adapter = PostsRecyclerViewAdapter(this)
viewBinding.feedRecyclerView.adapter = adapter
viewBinding.feedRecyclerView.setItemViewCacheSize(7)
viewBinding.feedRecyclerView.layoutManager = LinearLayoutManager(requireContext())
@@ -192,6 +193,10 @@ class PostListingFragment : Fragment(), OnUserInteractedWithPostCallback {
startActivity(intent)
}
+ override fun hashtagClicked(hashtag: String) {
+ HashtagsPostsActivity.startActivity(requireContext(), hashtag)
+ }
+
override fun onProfileClick(userId: Int) {
ProfileActivity.startActivity(requireContext(), userId)
}
diff --git a/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt b/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt
index 8973156..46de946 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt
@@ -75,7 +75,7 @@ class PostViewerActivity : IsolaattiBaseActivity() {
}
viewModel.post.observe(this) {
- markwon.setMarkdown(binding.markwonContainer, it.textContent)
+ binding.markwonContainer.text = it.textContent
binding.author.text = it.userName
binding.profileImageView.load(UrlGen.userProfileImage(it.userId), imageLoader)
binding.commentsInfo.text = getString(R.string.comments_info, it.numberOfComments)
diff --git a/app/src/main/java/com/isolaatti/profile/ui/ProfileActivity.kt b/app/src/main/java/com/isolaatti/profile/ui/ProfileActivity.kt
index b2d2125..1db5d46 100644
--- a/app/src/main/java/com/isolaatti/profile/ui/ProfileActivity.kt
+++ b/app/src/main/java/com/isolaatti/profile/ui/ProfileActivity.kt
@@ -4,6 +4,7 @@ import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
import androidx.core.app.TaskStackBuilder
import com.isolaatti.common.IsolaattiBaseActivity
import com.isolaatti.databinding.ActivityProfileBinding
@@ -15,6 +16,7 @@ class ProfileActivity : IsolaattiBaseActivity() {
lateinit var viewBinding: ActivityProfileBinding
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
viewBinding = ActivityProfileBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
diff --git a/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt b/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt
index 407d425..a3ed5e0 100644
--- a/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt
+++ b/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt
@@ -37,6 +37,7 @@ import com.isolaatti.common.options_bottom_sheet.presentation.BottomSheetPostOpt
import com.isolaatti.common.options_bottom_sheet.ui.BottomSheetPostOptionsFragment
import com.isolaatti.databinding.FragmentDiscussionsBinding
import com.isolaatti.followers.domain.FollowingState
+import com.isolaatti.hashtags.ui.HashtagsPostsActivity
import com.isolaatti.images.common.domain.entity.Image
import com.isolaatti.images.image_chooser.ui.ImageChooserContract
import com.isolaatti.images.image_list.ui.ImagesFragment
@@ -378,16 +379,6 @@ class ProfileMainFragment : Fragment() {
}
}
- viewBinding.audiosButton.setOnClickListener {
- findNavController().navigate(ProfileMainFragmentDirections.actionDiscussionsFragmentToAudiosFragment(AudiosFragment.SOURCE_PROFILE, userId.toString()))
- }
-
- viewBinding.imagesButton.setOnClickListener {
- findNavController().navigate(
- ProfileMainFragmentDirections.actionDiscussionsFragmentToImagesFragment(ImagesFragment.SOURCE_PROFILE, userId.toString())
- )
- }
-
viewBinding.createPostButton.setOnClickListener {
createDiscussion.launch(Unit)
}
@@ -456,7 +447,7 @@ class ProfileMainFragment : Fragment() {
.usePlugin(LinkifyPlugin.create())
.build()
- postsAdapter = PostsRecyclerViewAdapter(markwon,postListingRecyclerViewAdapterWiring )
+ postsAdapter = PostsRecyclerViewAdapter(postListingRecyclerViewAdapterWiring )
}
@@ -528,6 +519,10 @@ class ProfileMainFragment : Fragment() {
}, getString(R.string.share_post))
startActivity(intent)
}
+
+ override fun hashtagClicked(hashtag: String) {
+ HashtagsPostsActivity.startActivity(requireContext(), hashtag)
+ }
}
}
diff --git a/app/src/main/java/com/isolaatti/search/ui/SearchFragment.kt b/app/src/main/java/com/isolaatti/search/ui/SearchFragment.kt
index b93c407..73a44a2 100644
--- a/app/src/main/java/com/isolaatti/search/ui/SearchFragment.kt
+++ b/app/src/main/java/com/isolaatti/search/ui/SearchFragment.kt
@@ -1,6 +1,6 @@
package com.isolaatti.search.ui
-import android.content.Intent
+import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
@@ -10,7 +10,6 @@ import androidx.core.widget.doAfterTextChanged
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
-import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.carousel.CarouselLayoutManager
@@ -18,12 +17,11 @@ import com.google.android.material.carousel.UncontainedCarouselStrategy
import com.google.android.material.chip.Chip
import com.isolaatti.R
import com.isolaatti.databinding.FragmentSearchBinding
+import com.isolaatti.hashtags.ui.HashtagsPostsActivity
import com.isolaatti.posting.posts.viewer.ui.PostViewerActivity
import com.isolaatti.profile.domain.entity.ProfileListItem
-import com.isolaatti.profile.profile_listing.ui.ProfileListingFragment
import com.isolaatti.profile.ui.ProfileActivity
import com.isolaatti.search.data.HashtagsDto
-import com.isolaatti.search.data.NewestUsersDto
import com.isolaatti.search.data.SearchDto
import com.isolaatti.search.data.SearchHistoryEntity
import com.isolaatti.search.data.SearchResultType
@@ -63,7 +61,7 @@ class SearchFragment : Fragment() {
viewBinding.chipGroup.addView(Chip(requireContext()).apply {
text = "#$hashtag"
setOnClickListener {
- findNavController().navigate(SearchFragmentDirections.actionSearchFragmentToHashtagPostsFragment(hashtag))
+ HashtagsPostsActivity.startActivity(requireContext(), hashtag)
}
})
}
@@ -100,6 +98,7 @@ class SearchFragment : Fragment() {
viewBinding.searchBar.menu.findItem(R.id.close_button)?.setVisible(false)
}
}
+ @SuppressLint("RestrictedApi")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupListeners()
@@ -141,7 +140,7 @@ class SearchFragment : Fragment() {
it.resourceId.toLongOrNull()?.also { PostViewerActivity.startActivity(requireContext(), it) }
}
SearchResultType.Hashtag -> {
- findNavController().navigate(SearchFragmentDirections.actionSearchFragmentToHashtagPostsFragment(it.resourceId))
+ HashtagsPostsActivity.startActivity(requireContext(), it.resourceId)
}
SearchResultType.Unknown -> {}
}
diff --git a/app/src/main/res/layout/activity_image_maker.xml b/app/src/main/res/layout/activity_image_maker.xml
index 3216ffc..03564d5 100644
--- a/app/src/main/res/layout/activity_image_maker.xml
+++ b/app/src/main/res/layout/activity_image_maker.xml
@@ -26,28 +26,6 @@
android:background="@color/translucent_purple"
android:translationZ="2dp">
-
-
-
-
-
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ android:layout_marginTop="8dp"/>
+ android:layout_marginBottom="8dp"
+ android:linksClickable="true"/>
diff --git a/app/src/main/res/layout/fragment_discussions.xml b/app/src/main/res/layout/fragment_discussions.xml
index f3e947a..5a7dfd2 100644
--- a/app/src/main/res/layout/fragment_discussions.xml
+++ b/app/src/main/res/layout/fragment_discussions.xml
@@ -10,7 +10,8 @@
android:id="@+id/topAppBar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- app:liftOnScrollColor="@color/on_surface">
+ app:liftOnScrollColor="@color/on_surface"
+ android:fitsSystemWindows="true">
-
-
@@ -194,7 +179,8 @@
android:id="@+id/swipe_to_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
+ app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
+ android:clipToPadding="false">
+ app:liftOnScroll="true"
+ android:fitsSystemWindows="true">
+ android:layout_height="wrap_content"
+ android:fitsSystemWindows="true">
+ android:hint="@string/what_do_you_want_to_talk_about_you_can_record_an_audio_if_you_want"/>
+ android:layout_height="wrap_content"
+ android:fitsSystemWindows="true">
+ android:layout_height="wrap_content"
+ android:fitsSystemWindows="true">
@@ -11,7 +12,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/materialCardViewFilledStyle"
- android:layout_margin="8dp">
+ android:layout_margin="8dp"
+ >
+ android:textStyle="bold"
+ tools:text="Erik"
+ android:textSize="16sp"/>
+ android:layout_height="wrap_content"
+ tools:text="Date"/>
+ android:layout_marginTop="8dp"
+ android:linksClickable="true"
+ android:textSize="16sp"
+ tools:text="Hola"
+ android:fontFamily="sans-serif"/>
-
@@ -44,19 +41,7 @@
-
-
-
-
-
+ android:label="HashtagsFragment" />
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6864525..af4de33 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -58,7 +58,7 @@
There is no more content to show
Post
Add image
- What do you want to talk about? Markdown is compatible. You can record an audio if you want.
+ What do you want to talk about? You can record an audio if you want.
Posted!
Drafts
Report profile
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 3310ce8..fffea1f 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -33,4 +33,13 @@
- false
- #D9000000
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 13ca289..0c7d1da 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,6 +10,7 @@ buildscript {
def nav_version = "2.6.0"
classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
+ classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6'
}
}
plugins {