From 7c073b80c6711e00a86b3e925e154adf56a8c810 Mon Sep 17 00:00:00 2001 From: erik-everardo Date: Sat, 9 Nov 2024 01:22:18 -0600 Subject: [PATCH] WIP: 1. edge to edge 2. se quitan imagenes y audios del perfil 3. se quita markdown de posts 4. se agrega pantalla de licencias 5. se agrega soporte para dar clic en hashtags 6. pantalla de hashtags ahora es una actividad 7. se comienza a implementar nuevo flujo de imagenes --- app/build.gradle | 6 ++- app/src/main/AndroidManifest.xml | 10 ++++ .../java/com/isolaatti/about/AboutActivity.kt | 7 +-- .../OnUserInteractedWithPostCallback.kt | 1 + .../com/isolaatti/common/TaggingRegexes.kt | 4 ++ .../com/isolaatti/database/AppDatabase.kt | 6 ++- .../hashtags/ui/HashtagPostsFragment.kt | 46 ------------------- .../hashtags/ui/HashtagsPostsActivity.kt | 46 +++++++++++++++++++ .../com/isolaatti/home/ui/FeedFragment.kt | 9 ++++ .../com/isolaatti/home/ui/HomeActivity.kt | 2 + .../images/common/data/dao/ImagesDraftsDao.kt | 19 ++++++++ .../common/data/entity/ImageDraftEntity.kt | 12 +++++ .../image_maker/ui/ImageMakerActivity.kt | 5 -- .../posting/posts/domain/entity/Post.kt | 6 ++- .../presentation/PostsRecyclerViewAdapter.kt | 20 ++++++-- .../posting/posts/ui/CreatePostActivity.kt | 2 +- .../ui/CreatePostFragmentStateAdapter.kt | 3 +- ...tingFragment.kt => PostEditingFragment.kt} | 7 ++- .../posting/posts/ui/PostListingFragment.kt | 7 ++- .../posts/viewer/ui/PostViewerActivity.kt | 2 +- .../isolaatti/profile/ui/ProfileActivity.kt | 2 + .../profile/ui/ProfileMainFragment.kt | 17 +++---- .../com/isolaatti/search/ui/SearchFragment.kt | 11 ++--- .../main/res/layout/activity_image_maker.xml | 26 ++--------- ...hashtag.xml => activity_posts_hashtag.xml} | 0 app/src/main/res/layout/comment_layout.xml | 3 +- .../main/res/layout/fragment_discussions.xml | 22 ++------- app/src/main/res/layout/fragment_feed.xml | 3 +- .../res/layout/fragment_followers_main.xml | 3 +- .../res/layout/fragment_markdown_editing.xml | 2 +- .../res/layout/fragment_notifications.xml | 3 +- app/src/main/res/layout/fragment_search.xml | 3 +- app/src/main/res/layout/post_layout.xml | 17 +++++-- .../main/res/navigation/home_navigation.xml | 17 +------ .../navigation/post_creator_navigation.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- app/src/main/res/values/themes.xml | 9 ++++ build.gradle | 1 + 38 files changed, 206 insertions(+), 157 deletions(-) create mode 100644 app/src/main/java/com/isolaatti/common/TaggingRegexes.kt delete mode 100644 app/src/main/java/com/isolaatti/hashtags/ui/HashtagPostsFragment.kt create mode 100644 app/src/main/java/com/isolaatti/hashtags/ui/HashtagsPostsActivity.kt create mode 100644 app/src/main/java/com/isolaatti/images/common/data/dao/ImagesDraftsDao.kt create mode 100644 app/src/main/java/com/isolaatti/images/common/data/entity/ImageDraftEntity.kt rename app/src/main/java/com/isolaatti/posting/posts/ui/{MarkdownEditingFragment.kt => PostEditingFragment.kt} (96%) rename app/src/main/res/layout/{fragment_posts_hashtag.xml => activity_posts_hashtag.xml} (100%) 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 {