From c3efa4d0049f8cb79e9ccf7318c399a518eb2e3d Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Thu, 10 Sep 2020 12:20:49 +0100 Subject: [PATCH 1/7] generate install_id natively --- app/build.gradle | 1 + .../io/lbry/browser/FirstRunActivity.java | 114 +++++++++++++++++- .../java/io/lbry/browser/MainActivity.java | 21 +++- .../java/io/lbry/browser/utils/Helper.java | 2 +- .../main/java/io/lbry/browser/utils/Lbry.java | 20 +++ 5 files changed, 145 insertions(+), 13 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f8ad4a6a..319a4e62 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -117,6 +117,7 @@ dependencies { implementation 'com.arthenica:mobile-ffmpeg-full-gpl:4.3.1.LTS' + implementation 'org.bitcoinj:bitcoinj-tools:0.14.7' implementation 'org.java-websocket:Java-WebSocket:1.5.1' compileOnly 'org.projectlombok:lombok:1.18.10' diff --git a/app/src/main/java/io/lbry/browser/FirstRunActivity.java b/app/src/main/java/io/lbry/browser/FirstRunActivity.java index ad10a6ef..b6d6eecb 100644 --- a/app/src/main/java/io/lbry/browser/FirstRunActivity.java +++ b/app/src/main/java/io/lbry/browser/FirstRunActivity.java @@ -15,12 +15,22 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.text.HtmlCompat; import androidx.preference.PreferenceManager; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; + import io.lbry.browser.exceptions.AuthTokenInvalidatedException; import io.lbry.browser.utils.Helper; import io.lbry.browser.utils.Lbry; import io.lbry.browser.utils.LbryAnalytics; import io.lbry.browser.utils.Lbryio; import io.lbry.lbrysdk.LbrynetService; +import io.lbry.lbrysdk.ServiceHelper; +import io.lbry.lbrysdk.Utils; public class FirstRunActivity extends AppCompatActivity { @@ -44,12 +54,7 @@ public class FirstRunActivity extends AppCompatActivity { }); registerAuthReceiver(); - if (!Lbry.SDK_READY) { - findViewById(R.id.welcome_wait_container).setVisibility(View.VISIBLE); - } else { - authenticate(); - } - + findViewById(R.id.welcome_wait_container).setVisibility(View.VISIBLE); IntentFilter filter = new IntentFilter(); filter.addAction(MainActivity.ACTION_SDK_READY); filter.addAction(LbrynetService.ACTION_STOP_SERVICE); @@ -62,10 +67,38 @@ public class FirstRunActivity extends AppCompatActivity { authenticate(); } else if (LbrynetService.ACTION_STOP_SERVICE.equals(action)) { finish(); + if (MainActivity.instance != null) { + MainActivity.instance.finish(); + } } } }; registerReceiver(sdkReceiver, filter); + + CheckInstallIdTask task = new CheckInstallIdTask(this, new CheckInstallIdTask.InstallIdHandler() { + @Override + public void onInstallIdChecked(boolean result) { + // start the sdk from FirstRun + boolean serviceRunning = MainActivity.isServiceRunning(MainActivity.instance, LbrynetService.class); + if (!serviceRunning) { + Lbry.SDK_READY = false; + ServiceHelper.start(MainActivity.instance, "", LbrynetService.class, "lbrynetservice"); + } + + if (result) { + // install_id generated and validated, authenticate now + authenticate(); + return; + } + + // we weren't able to generate the install_id ourselves, depend on the sdk for that + if (Lbry.SDK_READY) { + authenticate(); + return; + } + } + }); + task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } public void onResume() { @@ -134,6 +167,75 @@ public class FirstRunActivity extends AppCompatActivity { super.onDestroy(); } + private void generateIdAndAuthenticate() { + + } + + private static class CheckInstallIdTask extends AsyncTask { + private Context context; + private InstallIdHandler handler; + public CheckInstallIdTask(Context context, InstallIdHandler handler) { + this.context = context; + this.handler = handler; + } + protected Boolean doInBackground(Void... params) { + // Load the installation id from the file system + String lbrynetDir = String.format("%s/%s", Utils.getAppInternalStorageDir(context), "lbrynet"); + File dir = new File(lbrynetDir); + boolean dirExists = dir.isDirectory(); + if (!dirExists) { + dirExists = dir.mkdirs(); + } + + if (!dirExists) { + return false; + } + + String installIdPath = String.format("%s/install_id", lbrynetDir); + File file = new File(installIdPath); + String installId = null; + if (!file.exists()) { + // generate the install_id + installId = Lbry.generateId(); + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new FileWriter(file)); + writer.write(installId); + android.util.Log.d("LbryMain", "Generated install ID=" + installId); + } catch (IOException ex) { + return false; + } finally { + Helper.closeCloseable(writer); + } + } else { + // read the installation id from the file + BufferedReader reader = null; + try { + reader = new BufferedReader(new InputStreamReader(new FileInputStream(installIdPath))); + installId = reader.readLine(); + } catch (IOException ex) { + return false; + } finally { + Helper.closeCloseable(reader); + } + } + + if (!Helper.isNullOrEmpty(installId)) { + Lbry.INSTALLATION_ID = installId; + } + return !Helper.isNullOrEmpty(installId); + } + protected void onPostExecute(Boolean result) { + if (handler != null) { + handler.onInstallIdChecked(result); + } + } + + public interface InstallIdHandler { + void onInstallIdChecked(boolean result); + } + } + private static class AuthenticateTask extends AsyncTask { private Context context; public AuthenticateTask(Context context) { diff --git a/app/src/main/java/io/lbry/browser/MainActivity.java b/app/src/main/java/io/lbry/browser/MainActivity.java index 110f01a1..bd7a7a26 100644 --- a/app/src/main/java/io/lbry/browser/MainActivity.java +++ b/app/src/main/java/io/lbry/browser/MainActivity.java @@ -211,6 +211,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener private static final String SPECIAL_URL_PREFIX = "lbry://?"; private static final int REMOTE_NOTIFICATION_REFRESH_TTL = 300000; // 5 minutes public static final String SKU_SKIP = "lbryskip"; + public static MainActivity instance; private boolean shuttingDown; private Date remoteNotifcationsLastLoaded; @@ -393,6 +394,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener @Override protected void onCreate(Bundle savedInstanceState) { + instance = this; // workaround to fix dark theme because https://issuetracker.google.com/issues/37124582 try { new WebView(this); @@ -1140,12 +1142,14 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener checkFirstRun(); checkNowPlaying(); - // check (and start) the LBRY SDK service - serviceRunning = isServiceRunning(this, LbrynetService.class); - if (!serviceRunning) { - Lbry.SDK_READY = false; - //findViewById(R.id.global_sdk_initializing_status).setVisibility(View.VISIBLE); - ServiceHelper.start(this, "", LbrynetService.class, "lbrynetservice"); + if (isFirstRunCompleted()) { + // check (and start) the LBRY SDK service + serviceRunning = isServiceRunning(this, LbrynetService.class); + if (!serviceRunning) { + Lbry.SDK_READY = false; + //findViewById(R.id.global_sdk_initializing_status).setVisibility(View.VISIBLE); + ServiceHelper.start(this, "", LbrynetService.class, "lbrynetservice"); + } } checkSdkReady(); showSignedInUser(); @@ -1156,6 +1160,11 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener }*/ } + public boolean isFirstRunCompleted() { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + return sp.getBoolean(PREFERENCE_KEY_INTERNAL_FIRST_RUN_COMPLETED, false); + } + private void checkPurchases() { if (billingClient != null) { Purchase.PurchasesResult result = billingClient.queryPurchases(BillingClient.SkuType.INAPP); diff --git a/app/src/main/java/io/lbry/browser/utils/Helper.java b/app/src/main/java/io/lbry/browser/utils/Helper.java index 8fd0b416..e5ac6410 100644 --- a/app/src/main/java/io/lbry/browser/utils/Helper.java +++ b/app/src/main/java/io/lbry/browser/utils/Helper.java @@ -20,7 +20,6 @@ import android.provider.MediaStore; import android.text.method.LinkMovementMethod; import android.view.ContextMenu; import android.view.View; -import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; @@ -32,6 +31,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.gms.common.util.Hex; +import org.bitcoinj.core.Base58; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/io/lbry/browser/utils/Lbry.java b/app/src/main/java/io/lbry/browser/utils/Lbry.java index 1d0a7f5c..fb499ffa 100644 --- a/app/src/main/java/io/lbry/browser/utils/Lbry.java +++ b/app/src/main/java/io/lbry/browser/utils/Lbry.java @@ -2,12 +2,15 @@ package io.lbry.browser.utils; import android.util.Log; +import org.bitcoinj.core.Base58; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.security.KeyStore; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -17,6 +20,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.concurrent.TimeUnit; import io.lbry.browser.exceptions.ApiCallException; @@ -522,4 +526,20 @@ public final class Lbry { } } } + + public static String generateId() { + return generateId(64); + } + public static String generateId(int numBytes) { + byte[] arr = new byte[numBytes]; + new Random().nextBytes(arr); + try { + MessageDigest md = MessageDigest.getInstance("SHA-384"); + byte[] hash = md.digest(arr); + return Base58.encode(hash); + } catch (NoSuchAlgorithmException e) { + // pass + return null; + } + } } -- 2.45.3 From 13e5caa0ef7670263835038f38bc420b5f31ff07 Mon Sep 17 00:00:00 2001 From: Javi Rueda Date: Fri, 11 Sep 2020 14:28:37 +0200 Subject: [PATCH 2/7] Use Start/End instead of Left/Right to support RTL (#1005) * Use Start/End instead of Left/Right to support RTL * Change it also for relative layout properties --- .../browser/adapter/ClaimListAdapter.java | 2 +- .../browser/adapter/CommentListAdapter.java | 4 +- .../main/res/layout/activity_first_run.xml | 2 +- .../main/res/layout/activity_verification.xml | 2 +- app/src/main/res/layout/app_bar_main.xml | 32 ++++----- .../main/res/layout/card_invites_by_email.xml | 6 +- .../main/res/layout/card_invites_by_link.xml | 12 ++-- .../main/res/layout/card_invites_history.xml | 2 +- .../main/res/layout/card_reward_driver.xml | 4 +- .../main/res/layout/card_wallet_balance.xml | 34 ++++----- .../layout/card_wallet_receive_credits.xml | 10 +-- .../card_wallet_recent_transactions.xml | 6 +- .../res/layout/card_wallet_send_credits.xml | 16 ++--- app/src/main/res/layout/card_wallet_sync.xml | 14 ++-- .../res/layout/container_comment_form.xml | 16 ++--- .../layout/container_inline_channel_form.xml | 16 ++--- app/src/main/res/layout/content_main.xml | 14 ++-- .../main/res/layout/dialog_content_from.xml | 18 ++--- .../main/res/layout/dialog_content_scope.xml | 20 +++--- .../main/res/layout/dialog_content_sort.xml | 26 +++---- .../main/res/layout/dialog_create_support.xml | 18 ++--- .../main/res/layout/dialog_customize_tags.xml | 36 +++++----- app/src/main/res/layout/dialog_discover.xml | 6 +- .../main/res/layout/dialog_repost_claim.xml | 22 +++--- .../res/layout/exo_playback_control_view.xml | 30 ++++---- .../res/layout/floating_wallet_balance.xml | 18 ++--- .../main/res/layout/fragment_all_content.xml | 38 +++++----- app/src/main/res/layout/fragment_channel.xml | 30 ++++---- .../res/layout/fragment_channel_comments.xml | 16 ++--- .../res/layout/fragment_channel_content.xml | 14 ++-- .../main/res/layout/fragment_channel_form.xml | 36 +++++----- .../res/layout/fragment_channel_manager.xml | 8 +-- .../main/res/layout/fragment_file_view.xml | 72 +++++++++---------- .../main/res/layout/fragment_following.xml | 30 ++++---- app/src/main/res/layout/fragment_invites.xml | 2 +- app/src/main/res/layout/fragment_library.xml | 48 ++++++------- app/src/main/res/layout/fragment_publish.xml | 8 +-- .../main/res/layout/fragment_publish_form.xml | 50 ++++++------- .../main/res/layout/fragment_publishes.xml | 8 +-- app/src/main/res/layout/fragment_rewards.xml | 14 ++-- app/src/main/res/layout/fragment_search.xml | 2 +- .../layout/fragment_transaction_history.xml | 4 +- .../layout/fragment_verification_phone.xml | 6 +- .../layout/fragment_verification_wallet.xml | 2 +- app/src/main/res/layout/fragment_wallet.xml | 2 +- app/src/main/res/layout/list_item_channel.xml | 22 +++--- .../res/layout/list_item_channel_filter.xml | 2 +- app/src/main/res/layout/list_item_comment.xml | 10 +-- .../res/layout/list_item_editors_choice.xml | 12 ++-- .../list_item_featured_search_result.xml | 26 +++---- app/src/main/res/layout/list_item_gallery.xml | 4 +- .../res/layout/list_item_nav_menu_group.xml | 4 +- .../res/layout/list_item_nav_menu_item.xml | 6 +- .../res/layout/list_item_notification.xml | 6 +- app/src/main/res/layout/list_item_stream.xml | 28 ++++---- .../layout/list_item_suggested_channel.xml | 8 +-- app/src/main/res/layout/list_item_tag.xml | 10 +-- .../res/layout/list_item_url_suggestion.xml | 8 +-- app/src/main/res/layout/popup_webview.xml | 2 +- 59 files changed, 462 insertions(+), 462 deletions(-) diff --git a/app/src/main/java/io/lbry/browser/adapter/ClaimListAdapter.java b/app/src/main/java/io/lbry/browser/adapter/ClaimListAdapter.java index c36cbf3c..93b7958d 100644 --- a/app/src/main/java/io/lbry/browser/adapter/ClaimListAdapter.java +++ b/app/src/main/java/io/lbry/browser/adapter/ClaimListAdapter.java @@ -323,7 +323,7 @@ public class ClaimListAdapter extends RecyclerView.Adapter diff --git a/app/src/main/res/layout/card_invites_by_link.xml b/app/src/main/res/layout/card_invites_by_link.xml index 82853634..a02d92ba 100644 --- a/app/src/main/res/layout/card_invites_by_link.xml +++ b/app/src/main/res/layout/card_invites_by_link.xml @@ -24,7 +24,7 @@ android:id="@+id/invites_loading_channels_progress" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:visibility="gone" /> @@ -54,11 +54,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_toLeftOf="@id/invites_copy_invite_link" + android:layout_toStartOf="@id/invites_copy_invite_link" android:paddingTop="8dp" android:paddingBottom="8dp" - android:paddingLeft="12dp" - android:paddingRight="12dp"> + android:paddingStart="12dp" + android:paddingEnd="12dp"> + android:layout_alignParentEnd="true" /> diff --git a/app/src/main/res/layout/card_reward_driver.xml b/app/src/main/res/layout/card_reward_driver.xml index 93fb83b3..08f427d9 100644 --- a/app/src/main/res/layout/card_reward_driver.xml +++ b/app/src/main/res/layout/card_reward_driver.xml @@ -27,8 +27,8 @@ android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="8dp" - android:layout_toRightOf="@id/reward_driver_icon" + android:layout_marginStart="8dp" + android:layout_toEndOf="@id/reward_driver_icon" android:fontFamily="@font/inter" android:lineSpacingMultiplier="1.2" android:textColor="@color/white" diff --git a/app/src/main/res/layout/card_wallet_balance.xml b/app/src/main/res/layout/card_wallet_balance.xml index 550f8849..15a22b27 100644 --- a/app/src/main/res/layout/card_wallet_balance.xml +++ b/app/src/main/res/layout/card_wallet_balance.xml @@ -51,7 +51,7 @@ + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> @@ -232,7 +232,7 @@ android:textColor="@color/lbryGreen" /> + android:layout_alignParentEnd="true" /> + android:layout_marginStart="2dp" /> + android:layout_marginStart="8dp"> + android:layout_marginEnd="40dp"> + android:layout_toEndOf="@id/comment_form_avatar_container" + android:layout_marginStart="16dp"> diff --git a/app/src/main/res/layout/container_inline_channel_form.xml b/app/src/main/res/layout/container_inline_channel_form.xml index f7900b74..76318b5a 100644 --- a/app/src/main/res/layout/container_inline_channel_form.xml +++ b/app/src/main/res/layout/container_inline_channel_form.xml @@ -42,10 +42,10 @@ + android:layout_marginStart="2dp" /> @@ -105,15 +105,15 @@ android:layout_width="20dp" android:layout_height="20dp" android:layout_centerVertical="true" - android:layout_marginRight="24dp" - android:layout_toLeftOf="@id/inline_channel_form_create_button" + android:layout_marginEnd="24dp" + android:layout_toStartOf="@id/inline_channel_form_create_button" android:visibility="gone" /> diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index a981e4d7..ed30a9f0 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -104,7 +104,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:fontFamily="@font/inter" android:text="@string/sdk_initializing" android:textSize="14sp" @@ -118,8 +118,8 @@ android:clickable="true" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginLeft="4dp" - android:layout_marginRight="4dp" + android:layout_marginStart="4dp" + android:layout_marginEnd="4dp" android:layout_marginBottom="4dp" android:visibility="gone" app:cardElevation="8dp" @@ -133,9 +133,9 @@ android:layout_width="160dp" android:layout_height="90dp" /> + android:layout_marginStart="8dp"> + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" /> + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" /> + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" /> + android:layout_marginStart="2dp" /> @@ -148,9 +148,9 @@ android:id="@+id/create_support_progress" android:layout_width="20dp" android:layout_height="20dp" - android:layout_toLeftOf="@id/create_support_send" + android:layout_toStartOf="@id/create_support_send" android:layout_centerVertical="true" - android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:visibility="gone" /> diff --git a/app/src/main/res/layout/dialog_customize_tags.xml b/app/src/main/res/layout/dialog_customize_tags.xml index b19a9ff9..2efca530 100644 --- a/app/src/main/res/layout/dialog_customize_tags.xml +++ b/app/src/main/res/layout/dialog_customize_tags.xml @@ -8,8 +8,8 @@ android:layout_height="match_parent" android:orientation="vertical"> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" /> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" /> diff --git a/app/src/main/res/layout/dialog_discover.xml b/app/src/main/res/layout/dialog_discover.xml index e9a32daf..77386803 100644 --- a/app/src/main/res/layout/dialog_discover.xml +++ b/app/src/main/res/layout/dialog_discover.xml @@ -22,7 +22,7 @@ android:id="@+id/discover_loading" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:visibility="gone" /> @@ -46,8 +46,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:fontFamily="@font/inter" android:text="@string/done" /> diff --git a/app/src/main/res/layout/dialog_repost_claim.xml b/app/src/main/res/layout/dialog_repost_claim.xml index d35ca589..ada26944 100644 --- a/app/src/main/res/layout/dialog_repost_claim.xml +++ b/app/src/main/res/layout/dialog_repost_claim.xml @@ -74,7 +74,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_toRightOf="@id/repost_name_prefix" + android:layout_toEndOf="@id/repost_name_prefix" android:fontFamily="@font/inter" android:singleLine="true" android:textSize="14sp" @@ -107,10 +107,10 @@ + android:layout_marginStart="2dp" /> @@ -165,8 +165,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_marginRight="24dp" - android:layout_toLeftOf="@id/repost_button" + android:layout_marginEnd="24dp" + android:layout_toStartOf="@id/repost_button" android:fontFamily="@font/inter" android:textSize="14sp" android:text="@string/show_advanced" /> @@ -174,9 +174,9 @@ android:id="@+id/repost_progress" android:layout_width="20dp" android:layout_height="20dp" - android:layout_toLeftOf="@id/repost_button" + android:layout_toStartOf="@id/repost_button" android:layout_centerVertical="true" - android:layout_marginRight="8dp" + android:layout_marginEnd="8dp" android:visibility="gone" /> diff --git a/app/src/main/res/layout/exo_playback_control_view.xml b/app/src/main/res/layout/exo_playback_control_view.xml index 235ae4b1..e5385779 100644 --- a/app/src/main/res/layout/exo_playback_control_view.xml +++ b/app/src/main/res/layout/exo_playback_control_view.xml @@ -14,7 +14,7 @@ android:layout_centerVertical="true" android:layout_width="72dp" android:layout_height="72dp" - android:layout_toLeftOf="@id/player_play_pause"> + android:layout_toStartOf="@id/player_play_pause"> + android:layout_toEndOf="@id/player_play_pause"> + android:layout_toStartOf="@id/player_toggle_fullscreen"> + android:layout_alignParentEnd="true"> + android:layout_toStartOf="@id/player_playback_speed" + android:paddingStart="16dp" + android:paddingEnd="4dp"> @@ -19,8 +19,8 @@ android:layout_height="wrap_content" android:paddingTop="8dp" android:paddingBottom="8dp" - android:paddingLeft="8dp" - android:paddingRight="44dp" + android:paddingStart="8dp" + android:paddingEnd="44dp" android:visibility="invisible"> + android:paddingStart="12dp" + android:paddingEnd="16dp"> + android:layout_marginStart="2dp" /> diff --git a/app/src/main/res/layout/fragment_all_content.xml b/app/src/main/res/layout/fragment_all_content.xml index b1e8ef79..35b18a60 100644 --- a/app/src/main/res/layout/fragment_all_content.xml +++ b/app/src/main/res/layout/fragment_all_content.xml @@ -25,8 +25,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp"> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + android:layout_alignParentEnd="true" /> @@ -85,10 +85,10 @@ @@ -126,10 +126,10 @@ @@ -170,7 +170,7 @@ android:background="?attr/selectableItemBackground" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:clickable="true" android:fontFamily="@font/inter" diff --git a/app/src/main/res/layout/fragment_channel.xml b/app/src/main/res/layout/fragment_channel.xml index 7602a54a..9cd5b5a1 100644 --- a/app/src/main/res/layout/fragment_channel.xml +++ b/app/src/main/res/layout/fragment_channel.xml @@ -19,7 +19,7 @@ + android:layout_marginEnd="8dp"> + android:layout_marginEnd="8dp"> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> @@ -66,15 +66,15 @@ android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_toRightOf="@id/channel_content_sort_link" + android:layout_marginStart="24dp" + android:layout_toEndOf="@id/channel_content_sort_link" android:visibility="gone"> diff --git a/app/src/main/res/layout/fragment_channel_form.xml b/app/src/main/res/layout/fragment_channel_form.xml index 4b5630eb..6ba62998 100644 --- a/app/src/main/res/layout/fragment_channel_form.xml +++ b/app/src/main/res/layout/fragment_channel_form.xml @@ -29,7 +29,7 @@ android:background="@drawable/bg_small_icon" android:layout_width="24dp" android:layout_height="24dp" - android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:layout_marginBottom="16dp" android:layout_alignParentBottom="true"> @@ -169,7 +169,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="28dp" - android:layout_marginLeft="12dp" + android:layout_marginStart="12dp" android:text="@string/at" android:visibility="gone" /> @@ -195,10 +195,10 @@ + android:layout_marginStart="2dp" /> @@ -323,8 +323,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_marginRight="24dp" - android:layout_toLeftOf="@id/channel_form_save_button" + android:layout_marginEnd="24dp" + android:layout_toStartOf="@id/channel_form_save_button" android:fontFamily="@font/inter" android:textSize="14sp" android:text="@string/show_optional_fields" /> @@ -333,14 +333,14 @@ android:layout_width="20dp" android:layout_height="20dp" android:layout_centerVertical="true" - android:layout_marginRight="24dp" - android:layout_toLeftOf="@+id/channel_form_save_button" + android:layout_marginEnd="24dp" + android:layout_toStartOf="@+id/channel_form_save_button" android:visibility="gone" /> diff --git a/app/src/main/res/layout/fragment_channel_manager.xml b/app/src/main/res/layout/fragment_channel_manager.xml index f53e3429..7cd6a948 100644 --- a/app/src/main/res/layout/fragment_channel_manager.xml +++ b/app/src/main/res/layout/fragment_channel_manager.xml @@ -15,9 +15,9 @@ android:id="@+id/channel_manager_list_loading" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_marginTop="16dp" - android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:visibility="gone" /> diff --git a/app/src/main/res/layout/fragment_file_view.xml b/app/src/main/res/layout/fragment_file_view.xml index 46ad0a64..2bc6e115 100644 --- a/app/src/main/res/layout/fragment_file_view.xml +++ b/app/src/main/res/layout/fragment_file_view.xml @@ -19,7 +19,7 @@ + android:paddingStart="16dp" + android:paddingEnd="4dp"> + android:layout_marginEnd="48dp"> + android:layout_toStartOf="@id/file_view_icon_follow"> @@ -559,12 +559,12 @@ android:id="@+id/file_view_icon_unfollow" android:clickable="true" android:background="?attr/selectableItemBackground" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_width="24dp" android:layout_height="24dp" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:text="@string/fa_heart_broken" android:textSize="20dp" android:visibility="invisible" /> @@ -591,8 +591,8 @@ android:autoLink="all" android:textColorLink="@color/lbryGreen" android:textFontWeight="300" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" /> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" /> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> @@ -635,8 +635,8 @@ + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + android:layout_alignParentEnd="true" /> + android:layout_alignParentEnd="true" /> @@ -87,12 +87,12 @@ @@ -118,7 +118,7 @@ android:background="?attr/selectableItemBackground" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:clickable="true" android:fontFamily="@font/inter" @@ -131,8 +131,8 @@ android:id="@+id/following_page_info" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:fontFamily="@font/inter" android:textFontWeight="300" android:text="@string/lbry_works_better" @@ -188,8 +188,8 @@ @@ -52,7 +52,7 @@ android:id="@+id/library_list_loading" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:visibility="gone" /> @@ -190,7 +190,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_centerVertical="true" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:fontFamily="@font/inter" android:text="@string/zero_mb" android:textFontWeight="300" @@ -210,13 +210,13 @@ android:layout_height="10dp" android:layout_centerVertical="true" /> @@ -226,7 +226,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_centerVertical="true" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:fontFamily="@font/inter" android:text="@string/zero_mb" android:textFontWeight="300" @@ -246,13 +246,13 @@ android:layout_height="10dp" android:layout_centerVertical="true" /> @@ -262,7 +262,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_centerVertical="true" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:fontFamily="@font/inter" android:text="@string/zero_mb" android:textFontWeight="300" @@ -282,13 +282,13 @@ android:layout_height="10dp" android:layout_centerVertical="true" /> @@ -298,7 +298,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_centerVertical="true" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:fontFamily="@font/inter" android:text="@string/zero_mb" android:textFontWeight="300" diff --git a/app/src/main/res/layout/fragment_publish.xml b/app/src/main/res/layout/fragment_publish.xml index 4c7f637b..d474f74a 100644 --- a/app/src/main/res/layout/fragment_publish.xml +++ b/app/src/main/res/layout/fragment_publish.xml @@ -26,7 +26,7 @@ android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_marginLeft="-1.5dp"> + android:layout_marginStart="-1.5dp"> + android:layout_toEndOf="@id/publish_vertical_divider"> @@ -149,7 +149,7 @@ android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:fontFamily="@font/inter" android:textFontWeight="300" android:textSize="16sp" /> @@ -183,7 +183,7 @@ android:layout_width="20dp" android:layout_height="20dp" android:layout_centerVertical="true" - android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:visibility="gone" /> @@ -243,7 +243,7 @@ android:id="@+id/publish_form_loading_channels" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:visibility="gone" /> @@ -280,7 +280,7 @@ android:id="@+id/publish_form_price_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" /> @@ -318,8 +318,8 @@ android:entries="@array/publish_currencies" android:layout_width="110dp" android:layout_height="wrap_content" - android:layout_toRightOf="@+id/publish_form_price_layout" - android:layout_marginLeft="4dp" + android:layout_toEndOf="@+id/publish_form_price_layout" + android:layout_marginStart="4dp" android:layout_marginTop="24dp" /> @@ -349,7 +349,7 @@ android:id="@+id/publish_form_generate_address" android:background="?attr/selectableItemBackground" android:clickable="true" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -416,10 +416,10 @@ + android:layout_marginStart="2dp" /> @@ -538,7 +538,7 @@ android:layout_height="wrap_content" android:layout_gravity="end" android:layout_marginTop="24dp" - android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:fontFamily="@font/inter" android:text="@string/show_extra_fields" android:textFontWeight="300" /> @@ -546,8 +546,8 @@ diff --git a/app/src/main/res/layout/fragment_publishes.xml b/app/src/main/res/layout/fragment_publishes.xml index ce375030..9168ccc2 100644 --- a/app/src/main/res/layout/fragment_publishes.xml +++ b/app/src/main/res/layout/fragment_publishes.xml @@ -15,9 +15,9 @@ android:id="@+id/publishes_list_loading" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_marginTop="16dp" - android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:visibility="gone" /> diff --git a/app/src/main/res/layout/fragment_rewards.xml b/app/src/main/res/layout/fragment_rewards.xml index 46838086..9d9e82ef 100644 --- a/app/src/main/res/layout/fragment_rewards.xml +++ b/app/src/main/res/layout/fragment_rewards.xml @@ -8,8 +8,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="16dp" - android:paddingLeft="16dp" - android:paddingRight="16dp"> + android:paddingStart="16dp" + android:paddingEnd="16dp"> @@ -44,7 +44,7 @@ android:id="@+id/rewards_list_loading" android:layout_width="20dp" android:layout_height="20dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:visibility="gone" /> @@ -87,7 +87,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:fontFamily="@font/inter" android:textSize="24sp" android:textColor="@color/white" /> @@ -143,7 +143,7 @@ diff --git a/app/src/main/res/layout/fragment_transaction_history.xml b/app/src/main/res/layout/fragment_transaction_history.xml index 2762311d..0c545eac 100644 --- a/app/src/main/res/layout/fragment_transaction_history.xml +++ b/app/src/main/res/layout/fragment_transaction_history.xml @@ -9,8 +9,8 @@ android:id="@+id/transaction_history_no_transactions" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:fontFamily="@font/inter" android:textSize="14sp" android:text="@string/no_transactions" diff --git a/app/src/main/res/layout/fragment_verification_phone.xml b/app/src/main/res/layout/fragment_verification_phone.xml index d517ba5e..266de2b5 100644 --- a/app/src/main/res/layout/fragment_verification_phone.xml +++ b/app/src/main/res/layout/fragment_verification_phone.xml @@ -136,8 +136,8 @@ android:id="@+id/verification_phone_verify_progress" android:layout_width="24dp" android:layout_height="24dp" - android:layout_toRightOf="@id/verification_phone_verify_button" - android:layout_marginLeft="16dp" + android:layout_toEndOf="@id/verification_phone_verify_button" + android:layout_marginStart="16dp" android:layout_centerVertical="true" android:visibility="gone" /> @@ -149,7 +149,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:fontFamily="@font/inter" android:text="@string/edit" android:textColor="@color/white" diff --git a/app/src/main/res/layout/fragment_verification_wallet.xml b/app/src/main/res/layout/fragment_verification_wallet.xml index dbed136c..0c6d6eff 100644 --- a/app/src/main/res/layout/fragment_verification_wallet.xml +++ b/app/src/main/res/layout/fragment_verification_wallet.xml @@ -33,7 +33,7 @@ android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="center" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_marginTop="24dp" /> diff --git a/app/src/main/res/layout/fragment_wallet.xml b/app/src/main/res/layout/fragment_wallet.xml index 762e2866..4b0fff98 100644 --- a/app/src/main/res/layout/fragment_wallet.xml +++ b/app/src/main/res/layout/fragment_wallet.xml @@ -95,7 +95,7 @@ @@ -128,8 +128,8 @@ android:layout_height="wrap_content" android:orientation="vertical" android:layout_centerVertical="true" - android:layout_marginLeft="16dp" - android:layout_toRightOf="@id/claim_media_container"> + android:layout_marginStart="16dp" + android:layout_toEndOf="@id/claim_media_container"> + android:layout_marginEnd="2dp"> + android:layout_marginStart="16dp" + android:layout_toEndOf="@id/claim_media_container"> diff --git a/app/src/main/res/layout/list_item_stream.xml b/app/src/main/res/layout/list_item_stream.xml index 6e73ec64..be24eeae 100644 --- a/app/src/main/res/layout/list_item_stream.xml +++ b/app/src/main/res/layout/list_item_stream.xml @@ -3,8 +3,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingLeft="16dp" - android:paddingRight="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" android:paddingTop="8dp" android:paddingBottom="8dp" android:clickable="true" @@ -32,7 +32,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginLeft="4dp" + android:layout_marginStart="4dp" android:fontFamily="@font/inter" android:textColor="@color/lightForeground" android:textFontWeight="300" @@ -41,7 +41,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginLeft="4dp" + android:layout_marginStart="4dp" android:fontFamily="@font/inter" android:text="@string/reposted" android:textColor="@color/lightForeground" @@ -83,8 +83,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_alignParentRight="true" - android:layout_marginRight="4dp" + android:layout_alignParentEnd="true" + android:layout_marginEnd="4dp" android:layout_marginBottom="4dp" android:fontFamily="@font/inter" android:textColor="@android:color/white" @@ -98,13 +98,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_marginTop="4dp" - android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" android:paddingTop="2dp" android:paddingBottom="2dp" - android:paddingLeft="6dp" - android:paddingRight="7dp" + android:paddingStart="6dp" + android:paddingEnd="7dp" android:visibility="gone"> + android:layout_marginStart="16dp" + android:layout_toEndOf="@id/claim_media_container"> diff --git a/app/src/main/res/layout/list_item_suggested_channel.xml b/app/src/main/res/layout/list_item_suggested_channel.xml index 9c461b53..49ebf048 100644 --- a/app/src/main/res/layout/list_item_suggested_channel.xml +++ b/app/src/main/res/layout/list_item_suggested_channel.xml @@ -10,8 +10,8 @@ android:focusable="true" android:paddingTop="12dp" android:paddingBottom="12dp" - android:paddingLeft="8dp" - android:paddingRight="8dp"> + android:paddingStart="8dp" + android:paddingEnd="8dp"> + android:paddingStart="8dp" + android:paddingEnd="8dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_tag.xml b/app/src/main/res/layout/list_item_tag.xml index 9881babe..f37e1d6c 100644 --- a/app/src/main/res/layout/list_item_tag.xml +++ b/app/src/main/res/layout/list_item_tag.xml @@ -5,19 +5,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="6dp" - android:layout_marginRight="6dp" + android:layout_marginEnd="6dp" android:orientation="horizontal" android:paddingTop="4dp" android:paddingBottom="4dp" - android:paddingLeft="8dp" - android:paddingRight="12dp" + android:paddingStart="8dp" + android:paddingEnd="12dp" android:foreground="?attr/selectableItemBackground"> \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_url_suggestion.xml b/app/src/main/res/layout/list_item_url_suggestion.xml index 335c865e..2be0703e 100644 --- a/app/src/main/res/layout/list_item_url_suggestion.xml +++ b/app/src/main/res/layout/list_item_url_suggestion.xml @@ -2,8 +2,8 @@ \ No newline at end of file -- 2.45.3 From 7ce7314ab94020b2495450974a90c196fa52cc97 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 11 Sep 2020 13:41:30 +0100 Subject: [PATCH 3/7] bumpversion 0.16.1 --> 0.16.2 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 319a4e62..0976ad65 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "io.lbry.browser" minSdkVersion 21 targetSdkVersion 29 - versionCode 1601 - versionName "0.16.1" + versionCode 1602 + versionName "0.16.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } -- 2.45.3 From d918cb28bd69f31534e7133066bed45149c7bf27 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 11 Sep 2020 13:50:16 +0100 Subject: [PATCH 4/7] sdk 0.81.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0976ad65..45a23f7d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -128,8 +128,8 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' - __32bitImplementation 'io.lbry:lbrysdk32:0.80.0' - __64bitImplementation 'io.lbry:lbrysdk64:0.80.0' + __32bitImplementation 'io.lbry:lbrysdk32:0.81.0' + __64bitImplementation 'io.lbry:lbrysdk64:0.81.0' } apply plugin: 'com.google.gms.google-services' -- 2.45.3 From 546f4b9a8b8ecc34608df12da3d7112fdaf04bcb Mon Sep 17 00:00:00 2001 From: Javi Rueda Date: Fri, 11 Sep 2020 18:21:50 +0200 Subject: [PATCH 5/7] Support lbry.tv and other supported hosts for deep links. Add unit tests for LbryUri parse() method --- app/src/main/AndroidManifest.xml | 4 + .../java/io/lbry/browser/utils/LbryUri.java | 13 ++- .../io/lbry/browser/utils/LbryUriTest.java | 84 +++++++++++++++++++ 3 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 app/src/test/java/io/lbry/browser/utils/LbryUriTest.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 145b4940..306751c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -68,6 +68,10 @@ + + + + diff --git a/app/src/main/java/io/lbry/browser/utils/LbryUri.java b/app/src/main/java/io/lbry/browser/utils/LbryUri.java index 94458cfa..7b543bb6 100644 --- a/app/src/main/java/io/lbry/browser/utils/LbryUri.java +++ b/app/src/main/java/io/lbry/browser/utils/LbryUri.java @@ -18,7 +18,7 @@ public class LbryUri { public static final int CLAIM_ID_MAX_LENGTH = 40; private static final String REGEX_PART_PROTOCOL = "^((?:lbry://|https://)?)"; - private static final String REGEX_PART_HOST = "((?:open.lbry.com/)?)"; + private static final String REGEX_PART_HOST = "((?:open.lbry.com/|lbry.tv/|lbry.lat/|lbry.fr/|lbry.in/)?)"; private static final String REGEX_PART_STREAM_OR_CHANNEL_NAME = "([^:$#/]*)"; private static final String REGEX_PART_MODIFIER_SEPARATOR = "([:$#]?)([^/]*)"; private static final String QUERY_STRING_BREAKER = "^([\\S]+)([?][\\S]*)"; @@ -128,9 +128,14 @@ public class LbryUri { boolean isChannel = includesChannel && Helper.isNullOrEmpty(possibleStreamName); String channelName = includesChannel && streamOrChannelName.length() > 1 ? streamOrChannelName.substring(1) : null; - // It would have thrown already on the RegEx parser if protocol value was incorrect - // open.lbry.com uses ':' as ModSeparators while lbry:// expects '#' - if (components.get(1).equals("open.lbry.com/")) { + /* + * It would have thrown already on the RegEx parser if protocol value was incorrect + * or HTTPS host was unknown to us. + * + * [https://] hosts use ':' as ModSeparators while [lbry://] protocol expects '#' + */ + + if (!components.get(1).isEmpty()) { if (primaryModSeparator.equals(":")) primaryModSeparator = "#"; if (secondaryModSeparator.equals(":")) diff --git a/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java b/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java new file mode 100644 index 00000000..b9a82cf0 --- /dev/null +++ b/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java @@ -0,0 +1,84 @@ +package io.lbry.browser.utils; + +import org.junit.Before; +import org.junit.Test; + +import io.lbry.browser.exceptions.LbryUriException; + +import static org.junit.Assert.assertEquals; + +public class LbryUriTest { + private LbryUri expected; + + /* + * Create an LbryUri object and assign fields manually using class methods. This object will be + * compared with LbryUri.parse() returned object on each test. + */ + @Before + public void createExpected() { + expected = new LbryUri(); + expected.setChannelName("@lbry"); + expected.setStreamName("lbryturns4"); + + try { + LbryUri.UriModifier primaryMod = LbryUri.UriModifier.parse("#", "3f"); + LbryUri.UriModifier secondaryMod = LbryUri.UriModifier.parse("#", "6"); + expected.setChannelClaimId(primaryMod.getClaimId()); + expected.setStreamClaimId(secondaryMod.getClaimId()); + } catch (LbryUriException e) { + e.printStackTrace(); + } + } + + @Test + public void parseOpenLbryComWithChannel() { + LbryUri obtained = new LbryUri(); + + try { + obtained = LbryUri.parse("https://open.lbry.com/@lbry:3f/lbryturns4:6",false); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + assertEquals(expected, obtained); + } + + @Test + public void parseLbryTvWithChannel() { + LbryUri obtained = new LbryUri(); + + try { + obtained = LbryUri.parse("https://lbry.tv/@lbry:3f/lbryturns4:6",false); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + assertEquals(expected, obtained); + } + + @Test + public void parseLbryAlterWithChannel() { + LbryUri obtained = new LbryUri(); + + try { + obtained = LbryUri.parse("https://lbry.lat/@lbry:3f/lbryturns4:6",false); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + assertEquals(expected, obtained); + } + + @Test + public void parseLbryProtocolWithChannel() { + LbryUri obtained = new LbryUri(); + + try { + obtained = LbryUri.parse("lbry://@lbry#3f/lbryturns4#6",false); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + assertEquals(expected, obtained); + } +} \ No newline at end of file -- 2.45.3 From 750cc4fb77b66089db83d63322463f8a5e55abcf Mon Sep 17 00:00:00 2001 From: Javi Rueda Date: Fri, 11 Sep 2020 20:33:32 +0200 Subject: [PATCH 6/7] add unit test for lbry protocol schema --- .../io/lbry/browser/utils/LbryUriTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java b/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java index b9a82cf0..962e6ed4 100644 --- a/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java +++ b/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java @@ -81,4 +81,28 @@ public class LbryUriTest { assertEquals(expected, obtained); } + + @Test + public void parseLbryProtocolOnlyChannel() { + LbryUri expectedForChannel = new LbryUri(); + expectedForChannel.setChannelName("@UCBerkeley"); + expectedForChannel.setChannel(true); + + try { + LbryUri.UriModifier primaryMod = LbryUri.UriModifier.parse("#", "d"); + expectedForChannel.setChannelClaimId(primaryMod.getClaimId()); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + LbryUri obtained = new LbryUri(); + + try { + obtained = LbryUri.parse("lbry://@UCBerkeley#d",false); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + assertEquals(expectedForChannel, obtained); + } } \ No newline at end of file -- 2.45.3 From 2893b5dce93d835d9bcf7ddffba15da7bb907c50 Mon Sep 17 00:00:00 2001 From: Javi Rueda Date: Mon, 21 Sep 2020 11:46:26 +0200 Subject: [PATCH 7/7] Add unit test for lbry.tv deep-link with only channel --- .../io/lbry/browser/utils/LbryUriTest.java | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java b/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java index 962e6ed4..36ce5b49 100644 --- a/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java +++ b/app/src/test/java/io/lbry/browser/utils/LbryUriTest.java @@ -1,5 +1,6 @@ package io.lbry.browser.utils; +import org.jetbrains.annotations.NotNull; import org.junit.Before; import org.junit.Test; @@ -84,16 +85,7 @@ public class LbryUriTest { @Test public void parseLbryProtocolOnlyChannel() { - LbryUri expectedForChannel = new LbryUri(); - expectedForChannel.setChannelName("@UCBerkeley"); - expectedForChannel.setChannel(true); - - try { - LbryUri.UriModifier primaryMod = LbryUri.UriModifier.parse("#", "d"); - expectedForChannel.setChannelClaimId(primaryMod.getClaimId()); - } catch (LbryUriException e) { - e.printStackTrace(); - } + LbryUri expectedForChannel = sinthesizeExpected(); LbryUri obtained = new LbryUri(); @@ -105,4 +97,34 @@ public class LbryUriTest { assertEquals(expectedForChannel, obtained); } + + @Test + public void parseLbryTvProtocolOnlyChannel() { + LbryUri expectedForChannel = sinthesizeExpected(); + + LbryUri obtained = new LbryUri(); + + try { + obtained = LbryUri.parse("https://lbry.tv/@UCBerkeley:d",false); + } catch (LbryUriException e) { + e.printStackTrace(); + } + + assertEquals(expectedForChannel, obtained); + } + + @NotNull + private LbryUri sinthesizeExpected() { + LbryUri expectedForChannel = new LbryUri(); + expectedForChannel.setChannelName("@UCBerkeley"); + expectedForChannel.setChannel(true); + + try { + LbryUri.UriModifier primaryMod = LbryUri.UriModifier.parse("#", "d"); + expectedForChannel.setChannelClaimId(primaryMod.getClaimId()); + } catch (LbryUriException e) { + e.printStackTrace(); + } + return expectedForChannel; + } } \ No newline at end of file -- 2.45.3