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 {