diff --git a/build.gradle b/build.gradle index a2fac55175..1ee6fa49bb 100644 --- a/build.gradle +++ b/build.gradle @@ -34,6 +34,7 @@ allprojects { includeGroupByRegex "com\\.github\\.jaiselrahman" // And monarchy includeGroupByRegex "com\\.github\\.Zhuinden" + includeGroupByRegex 'com\\.github\\.BillCarsonFr' } } maven { diff --git a/vector/build.gradle b/vector/build.gradle index dac6a5a4c9..a59f3340d5 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -354,9 +354,6 @@ dependencies { compileOnly 'com.squareup.inject:assisted-inject-annotations-dagger2:0.5.0' kapt 'com.squareup.inject:assisted-inject-processor-dagger2:0.5.0' - // Json viewer - implementation "com.yuyh.json:jsonviewer:1.0.6" - // gplay flavor only // Warning: due to the exclude, Android Studio does not propose to upgrade. Uncomment next line to be proposed to upgrade // implementation 'com.google.firebase:firebase-messaging:20.0.0' @@ -371,6 +368,8 @@ dependencies { implementation "androidx.emoji:emoji-appcompat:1.0.0" + implementation 'com.github.BillCarsonFr:JsonViewer:0.4' + // QR-code // Stick to 3.3.3 because of https://github.com/zxing/zxing/issues/1170 implementation 'com.google.zxing:core:3.3.3' diff --git a/vector/src/main/assets/open_source_licenses.html b/vector/src/main/assets/open_source_licenses.html index 55ec775e58..02ef5aba18 100755 --- a/vector/src/main/assets/open_source_licenses.html +++ b/vector/src/main/assets/open_source_licenses.html @@ -22,6 +22,7 @@ padding: 4px; } +
@@ -375,9 +376,7 @@ SOFTWARE. Copyright (c) 2014 Dushyanth Magulurudiff --git a/vector/src/main/java/im/vector/riotx/core/utils/UserColor.kt b/vector/src/main/java/im/vector/riotx/core/utils/UserColor.kt index 1f8308cd5c..15c4ce8a15 100644 --- a/vector/src/main/java/im/vector/riotx/core/utils/UserColor.kt +++ b/vector/src/main/java/im/vector/riotx/core/utils/UserColor.kt @@ -18,6 +18,8 @@ package im.vector.riotx.core.utils import androidx.annotation.ColorRes import im.vector.riotx.R +import im.vector.riotx.core.resources.ColorProvider +import org.billcarsonfr.jsonviewer.JSonViewerStyleProvider import kotlin.math.abs @ColorRes @@ -37,3 +39,14 @@ fun getColorFromUserId(userId: String?): Int { else -> R.color.riotx_username_1 } } + +fun jsonViewerStyler(colorProvider: ColorProvider): JSonViewerStyleProvider { + return JSonViewerStyleProvider( + keyColor = colorProvider.getColor(R.color.riotx_accent), + secondaryColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_secondary), + stringColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color), + baseColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_primary), + booleanColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color), + numberColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color) + ) +} diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 5cb3024712..79eb63bfb7 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -27,12 +27,10 @@ import android.os.Bundle import android.os.Parcelable import android.text.Spannable import android.view.HapticFeedbackConstants -import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem import android.view.View import android.view.Window -import android.widget.TextView import android.widget.Toast import androidx.annotation.DrawableRes import androidx.annotation.StringRes @@ -96,6 +94,7 @@ import im.vector.riotx.core.extensions.showKeyboard import im.vector.riotx.core.files.addEntryToDownloadManager import im.vector.riotx.core.glide.GlideApp import im.vector.riotx.core.platform.VectorBaseFragment +import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.core.ui.views.JumpToReadMarkerView import im.vector.riotx.core.ui.views.NotificationAreaView import im.vector.riotx.core.utils.Debouncer @@ -110,6 +109,7 @@ import im.vector.riotx.core.utils.checkPermissions import im.vector.riotx.core.utils.copyToClipboard import im.vector.riotx.core.utils.createUIHandler import im.vector.riotx.core.utils.getColorFromUserId +import im.vector.riotx.core.utils.jsonViewerStyler import im.vector.riotx.core.utils.openUrlInExternalBrowser import im.vector.riotx.core.utils.shareMedia import im.vector.riotx.core.utils.toast @@ -154,6 +154,7 @@ import kotlinx.android.parcel.Parcelize import kotlinx.android.synthetic.main.fragment_room_detail.* import kotlinx.android.synthetic.main.merge_composer_layout.view.* import kotlinx.android.synthetic.main.merge_overlay_waiting_view.* +import org.billcarsonfr.jsonviewer.JSonViewerDialog import org.commonmark.parser.Parser import timber.log.Timber import java.io.File @@ -178,8 +179,8 @@ class RoomDetailFragment @Inject constructor( private val notificationDrawerManager: NotificationDrawerManager, val roomDetailViewModelFactory: RoomDetailViewModel.Factory, private val eventHtmlRenderer: EventHtmlRenderer, - private val vectorPreferences: VectorPreferences -) : + private val vectorPreferences: VectorPreferences, + private val colorProvider: ColorProvider) : VectorBaseFragment(), TimelineEventController.Callback, VectorInviteView.Callback, @@ -1155,26 +1156,18 @@ class RoomDetailFragment @Inject constructor( onEditedDecorationClicked(action.messageInformationData) } is EventSharedAction.ViewSource -> { - val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_event_content, null) - view.findViewById(R.id.event_content_text_view)?.let { - it.text = action.content - } - - AlertDialog.Builder(requireActivity()) - .setView(view) - .setPositiveButton(R.string.ok, null) - .show() + JSonViewerDialog.newInstance( + action.content, + -1, + jsonViewerStyler(colorProvider) + ).show(childFragmentManager, "JSON_VIEWER") } is EventSharedAction.ViewDecryptedSource -> { - val view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_event_content, null) - view.findViewById (R.id.event_content_text_view)?.let { - it.text = action.content - } - - AlertDialog.Builder(requireActivity()) - .setView(view) - .setPositiveButton(R.string.ok, null) - .show() + JSonViewerDialog.newInstance( + action.content, + -1, + jsonViewerStyler(colorProvider) + ).show(childFragmentManager, "JSON_VIEWER") } is EventSharedAction.QuickReact -> { // eventId,ClickedOn,Add diff --git a/vector/src/main/java/im/vector/riotx/features/settings/devtools/AccountDataFragment.kt b/vector/src/main/java/im/vector/riotx/features/settings/devtools/AccountDataFragment.kt index a7d5d82fb1..0799ae270b 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/devtools/AccountDataFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/devtools/AccountDataFragment.kt @@ -27,12 +27,16 @@ import im.vector.riotx.R import im.vector.riotx.core.extensions.configureWith import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.core.platform.VectorBaseFragment +import im.vector.riotx.core.resources.ColorProvider +import im.vector.riotx.core.utils.jsonViewerStyler import kotlinx.android.synthetic.main.fragment_generic_recycler.* +import org.billcarsonfr.jsonviewer.JSonViewerDialog import javax.inject.Inject class AccountDataFragment @Inject constructor( val viewModelFactory: AccountDataViewModel.Factory, - private val epoxyController: AccountDataEpoxyController + private val epoxyController: AccountDataEpoxyController, + private val colorProvider: ColorProvider ) : VectorBaseFragment(), AccountDataEpoxyController.InteractionListener { override fun getLayoutResId() = R.layout.fragment_generic_recycler @@ -59,7 +63,10 @@ class AccountDataFragment @Inject constructor( val jsonString = MoshiProvider.providesMoshi() .adapter(UserAccountDataEvent::class.java) .toJson(fb) - JsonViewerBottomSheetDialog.newInstance(jsonString) - .show(childFragmentManager, "JSON_VIEWER") + JSonViewerDialog.newInstance( + jsonString, + -1, // open All + jsonViewerStyler(colorProvider) + ).show(childFragmentManager, "JSON_VIEWER") } } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/devtools/JsonViewerBottomSheetDialog.kt b/vector/src/main/java/im/vector/riotx/features/settings/devtools/JsonViewerBottomSheetDialog.kt deleted file mode 100644 index c638846f51..0000000000 --- a/vector/src/main/java/im/vector/riotx/features/settings/devtools/JsonViewerBottomSheetDialog.kt +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2020 New Vector Ltd - * - * 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 - * - * http://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 im.vector.riotx.features.settings.devtools - -import android.os.Bundle -import android.view.View -import androidx.core.content.ContextCompat -import butterknife.BindView -import com.airbnb.mvrx.MvRx -import com.yuyh.jsonviewer.library.JsonRecyclerView -import im.vector.riotx.R -import im.vector.riotx.core.platform.VectorBaseBottomSheetDialogFragment -import im.vector.riotx.features.themes.ThemeUtils - -class JsonViewerBottomSheetDialog : VectorBaseBottomSheetDialogFragment() { - - override fun getLayoutResId() = R.layout.fragment_jsonviewer - - @BindView(R.id.rv_json) - lateinit var jsonRecyclerView: JsonRecyclerView - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - jsonRecyclerView.setKeyColor(ThemeUtils.getColor(requireContext(), R.attr.colorAccent)) - jsonRecyclerView.setValueTextColor(ContextCompat.getColor(requireContext(), R.color.riotx_notice_secondary)) - jsonRecyclerView.setValueNumberColor(ContextCompat.getColor(requireContext(), R.color.riotx_notice_secondary)) - jsonRecyclerView.setValueUrlColor(ThemeUtils.getColor(requireContext(), android.R.attr.textColorLink)) - jsonRecyclerView.setValueNullColor(ContextCompat.getColor(requireContext(), R.color.riotx_notice_secondary)) - jsonRecyclerView.setBracesColor(ThemeUtils.getColor(requireContext(), R.attr.riotx_text_primary)) - - val jsonString = arguments?.getString(MvRx.KEY_ARG) - jsonRecyclerView.bindJson(jsonString) - } - - companion object { - fun newInstance(jsonString: String): JsonViewerBottomSheetDialog { - return JsonViewerBottomSheetDialog().apply { - setArguments(Bundle().apply { putString(MvRx.KEY_ARG, jsonString) }) - } - } - } -} diff --git a/vector/src/main/res/layout/fragment_jsonviewer.xml b/vector/src/main/res/layout/fragment_jsonviewer.xml deleted file mode 100644 index 5a4aecc56c..0000000000 --- a/vector/src/main/res/layout/fragment_jsonviewer.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file-