🐛 Fix bugs
This commit is contained in:
parent
9a8e40b288
commit
f95eadd3e6
@ -10,6 +10,8 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation 'com.facebook.fresco:webpsupport:2.6.0'
|
||||||
|
implementation 'com.facebook.react:react-android:0.75.5'
|
||||||
implementation 'com.google.android.material:material:1.12.0'
|
implementation 'com.google.android.material:material:1.12.0'
|
||||||
implementation 'androidx.glance:glance:1.1.1'
|
implementation 'androidx.glance:glance:1.1.1'
|
||||||
implementation 'androidx.glance:glance-appwidget:1.1.1'
|
implementation 'androidx.glance:glance-appwidget:1.1.1'
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
|
||||||
<uses-feature android:name="android.hardware.camera" />
|
<uses-feature android:name="android.hardware.camera" />
|
||||||
<uses-feature android:name="android.hardware.camera.autofocus" />
|
<uses-feature android:name="android.hardware.camera.autofocus" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
89
android/app/src/proguard-rules.pro
vendored
89
android/app/src/proguard-rules.pro
vendored
@ -12,3 +12,92 @@
|
|||||||
-keepclassmembers class * {
|
-keepclassmembers class * {
|
||||||
@com.google.gson.annotations.SerializedName <fields>;
|
@com.google.gson.annotations.SerializedName <fields>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# React Native
|
||||||
|
|
||||||
|
# Keep our interfaces so they can be used by other ProGuard rules.
|
||||||
|
# See http://sourceforge.net/p/proguard/bugs/466/
|
||||||
|
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
|
||||||
|
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
|
||||||
|
-keep class com.facebook.imagepipeline.nativecode.WebpTranscoderImpl { *; }
|
||||||
|
-keep class com.facebook.imagepipeline.nativecode.WebpTranscoder { *; }
|
||||||
|
|
||||||
|
-dontwarn com.facebook.imagepipeline.nativecode.**
|
||||||
|
-dontwarn com.facebook.imagepipeline.nativecode.WebpTranscoder
|
||||||
|
|
||||||
|
# Do not strip any method/class that is annotated with @DoNotStrip
|
||||||
|
-keep @com.facebook.proguard.annotations.DoNotStrip class *
|
||||||
|
-keepclassmembers class * {
|
||||||
|
@com.facebook.proguard.annotations.DoNotStrip *;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keep @com.facebook.proguard.annotations.DoNotStripAny class * {
|
||||||
|
*;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
|
||||||
|
void set*(***);
|
||||||
|
*** get*();
|
||||||
|
}
|
||||||
|
|
||||||
|
-keep class * implements com.facebook.react.bridge.JavaScriptModule { *; }
|
||||||
|
-keep class * implements com.facebook.react.bridge.NativeModule { *; }
|
||||||
|
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
|
||||||
|
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
|
||||||
|
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
|
||||||
|
|
||||||
|
-dontwarn com.facebook.react.**
|
||||||
|
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
|
||||||
|
-keep,includedescriptorclasses class com.facebook.react.turbomodule.core.** { *; }
|
||||||
|
|
||||||
|
# hermes
|
||||||
|
-keep class com.facebook.jni.** { *; }
|
||||||
|
|
||||||
|
# okio
|
||||||
|
-keep class sun.misc.Unsafe { *; }
|
||||||
|
-dontwarn java.nio.file.*
|
||||||
|
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
||||||
|
-dontwarn okio.**
|
||||||
|
|
||||||
|
# yoga
|
||||||
|
-keep,allowobfuscation @interface com.facebook.yoga.annotations.DoNotStrip
|
||||||
|
-keep @com.facebook.yoga.annotations.DoNotStrip class *
|
||||||
|
-keepclassmembers class * {
|
||||||
|
@com.facebook.yoga.annotations.DoNotStrip *;
|
||||||
|
}
|
||||||
|
|
||||||
|
# WebRTC
|
||||||
|
|
||||||
|
-keep class org.webrtc.** { *; }
|
||||||
|
-dontwarn org.chromium.build.BuildHooksAndroid
|
||||||
|
|
||||||
|
# Jisti Meet SDK
|
||||||
|
|
||||||
|
-keep class org.jitsi.meet.** { *; }
|
||||||
|
-keep class org.jitsi.meet.sdk.** { *; }
|
||||||
|
|
||||||
|
# We added the following when we switched minifyEnabled on. Probably because we
|
||||||
|
# ran the app and hit problems...
|
||||||
|
|
||||||
|
-keep class com.facebook.react.bridge.CatalystInstanceImpl { *; }
|
||||||
|
-keep class com.facebook.react.bridge.ExecutorToken { *; }
|
||||||
|
-keep class com.facebook.react.bridge.JavaScriptExecutor { *; }
|
||||||
|
-keep class com.facebook.react.bridge.ModuleRegistryHolder { *; }
|
||||||
|
-keep class com.facebook.react.bridge.ReadableType { *; }
|
||||||
|
-keep class com.facebook.react.bridge.queue.NativeRunnable { *; }
|
||||||
|
-keep class com.facebook.react.devsupport.** { *; }
|
||||||
|
|
||||||
|
-dontwarn com.facebook.react.devsupport.**
|
||||||
|
-dontwarn com.google.appengine.**
|
||||||
|
-dontwarn com.squareup.okhttp.**
|
||||||
|
-dontwarn javax.servlet.**
|
||||||
|
|
||||||
|
# ^^^ We added the above when we switched minifyEnabled on.
|
||||||
|
|
||||||
|
# Rule to avoid build errors related to SVGs.
|
||||||
|
-keep public class com.horcrux.svg.** {*;}
|
||||||
|
|
||||||
|
# https://github.com/facebook/fresco/issues/2638
|
||||||
|
-keep public class com.facebook.imageutils.** {
|
||||||
|
public *;
|
||||||
|
}
|
||||||
|
@ -964,6 +964,6 @@
|
|||||||
"postVideoLiveDescription": "This is a live video, you can embed the source site by yourself.",
|
"postVideoLiveDescription": "This is a live video, you can embed the source site by yourself.",
|
||||||
"postVideoRendererWeb": "WebView Rendering",
|
"postVideoRendererWeb": "WebView Rendering",
|
||||||
"postVideoRendererWebDescription": "Use WebView to render the content",
|
"postVideoRendererWebDescription": "Use WebView to render the content",
|
||||||
"fieldPostVideoStreamUrl": "Live Stream URL",
|
"fieldPostVideoUrl": "Video URL",
|
||||||
"fieldPostVideoStreamUrlDescription": "Live stream URL, can be HLS or webpage; use webpage renderer if you want to embed the webpage."
|
"fieldPostVideoUrlDescription": "The URL of the video content, it can be a webpage, and will be rendered by iFrame / WebView."
|
||||||
}
|
}
|
||||||
|
@ -961,6 +961,6 @@
|
|||||||
"postVideoLiveDescription": "这是一条直播影片,允许用户自行嵌入源站。",
|
"postVideoLiveDescription": "这是一条直播影片,允许用户自行嵌入源站。",
|
||||||
"postVideoRendererWeb": "网页渲染器",
|
"postVideoRendererWeb": "网页渲染器",
|
||||||
"postVideoRendererWebDescription": "使用 WebView 渲染内容。",
|
"postVideoRendererWebDescription": "使用 WebView 渲染内容。",
|
||||||
"fieldPostVideoStreamUrl": "直播流地址",
|
"fieldPostVideoUrl": "视频流地址",
|
||||||
"fieldPostVideoStreamUrlDescription": "直播流地址,可以为 HLS,或者网页;使用网页嵌入请启用网页渲染器。"
|
"fieldPostVideoUrlDescription": "视频内容的地址,可以为网页,将会使用 iFrame / WebView 渲染。"
|
||||||
}
|
}
|
||||||
|
@ -752,6 +752,7 @@ class PostWriteController extends ChangeNotifier {
|
|||||||
|
|
||||||
void setVideoUrl(String value) {
|
void setVideoUrl(String value) {
|
||||||
videoUrl = value;
|
videoUrl = value;
|
||||||
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setVideoLive(bool value) {
|
void setVideoLive(bool value) {
|
||||||
|
@ -1219,19 +1219,21 @@ class _PostVideoEditorState extends State<_PostVideoEditor> {
|
|||||||
FocusManager.instance.primaryFocus?.unfocus(),
|
FocusManager.instance.primaryFocus?.unfocus(),
|
||||||
).padding(horizontal: 16),
|
).padding(horizontal: 16),
|
||||||
const Gap(12),
|
const Gap(12),
|
||||||
if (widget.controller.videoLive)
|
if (widget.controller.videoLive ||
|
||||||
|
widget.controller.videoAttachment == null)
|
||||||
TextField(
|
TextField(
|
||||||
controller: _streamUrlController,
|
controller: _streamUrlController,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: 'fieldPostVideoStreamUrl'.tr(),
|
labelText: 'fieldPostVideoUrl'.tr(),
|
||||||
helperText: 'fieldPostVideoStreamUrlDescription'.tr(),
|
helperText: 'fieldPostVideoUrlDescription'.tr(),
|
||||||
border: OutlineInputBorder(),
|
border: OutlineInputBorder(),
|
||||||
isDense: true,
|
isDense: true,
|
||||||
),
|
),
|
||||||
onTapOutside: (_) =>
|
onTapOutside: (_) =>
|
||||||
FocusManager.instance.primaryFocus?.unfocus(),
|
FocusManager.instance.primaryFocus?.unfocus(),
|
||||||
).padding(horizontal: 12)
|
).padding(horizontal: 16, bottom: 12, top: 2),
|
||||||
else
|
if (!widget.controller.videoLive &&
|
||||||
|
_streamUrlController.text.isEmpty)
|
||||||
Container(
|
Container(
|
||||||
margin: const EdgeInsets.only(left: 16, right: 16),
|
margin: const EdgeInsets.only(left: 16, right: 16),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
@ -232,7 +232,7 @@ class _UserNameCardInlineSyntax extends markdown.InlineSyntax {
|
|||||||
final alias = match[0]!;
|
final alias = match[0]!;
|
||||||
final anchor = markdown.Element.text('a', alias)
|
final anchor = markdown.Element.text('a', alias)
|
||||||
..attributes['href'] = Uri.encodeFull(
|
..attributes['href'] = Uri.encodeFull(
|
||||||
'solink://account/${alias.substring(1)}',
|
'solink://accounts/${alias.substring(1)}',
|
||||||
);
|
);
|
||||||
parser.addNode(anchor);
|
parser.addNode(anchor);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user