From 2e44ce44141b1ad26faffd5614cd2254e361071f Mon Sep 17 00:00:00 2001 From: Javi Rueda Date: Fri, 28 Aug 2020 14:29:00 +0200 Subject: [PATCH] Remove private key dependant Twitter API and non-free BillingClient API --- app/build.gradle | 13 - app/src/main/AndroidManifest.xml | 1 - .../java/io/lbry/browser/MainActivity.java | 110 -------- .../io/lbry/browser/VerificationActivity.java | 107 -------- .../io/lbry/browser/model/TwitterOauth.java | 9 - .../browser/tasks/TwitterOauthHandler.java | 8 - .../tasks/lbryinc/AndroidPurchaseTask.java | 68 ----- .../tasks/lbryinc/TwitterVerifyTask.java | 68 ----- .../verification/TwitterAccessTokenTask.java | 68 ----- .../verification/TwitterRequestTokenTask.java | 88 ------- .../ManualVerificationFragment.java | 247 ------------------ .../layout/fragment_verification_manual.xml | 64 ----- app/src/main/res/values-ca/strings.xml | 12 - app/src/main/res/values-fr/strings.xml | 12 - app/src/main/res/values-id/strings.xml | 12 - app/src/main/res/values-jv/strings.xml | 12 - app/src/main/res/values-nl/strings.xml | 12 - app/src/main/res/values-pt-rBR/strings.xml | 12 - app/src/main/res/values-pt/strings.xml | 12 - app/src/main/res/values-ru/strings.xml | 12 - app/src/main/res/values-sr/strings.xml | 12 - app/src/main/res/values-uk/strings.xml | 12 - app/src/main/res/values-vi/strings.xml | 12 - app/src/main/res/values-zh-rTW/strings.xml | 8 - app/src/main/res/values/strings.xml | 12 - 25 files changed, 1003 deletions(-) delete mode 100644 app/src/main/java/io/lbry/browser/model/TwitterOauth.java delete mode 100644 app/src/main/java/io/lbry/browser/tasks/TwitterOauthHandler.java delete mode 100644 app/src/main/java/io/lbry/browser/tasks/lbryinc/AndroidPurchaseTask.java delete mode 100644 app/src/main/java/io/lbry/browser/tasks/lbryinc/TwitterVerifyTask.java delete mode 100644 app/src/main/java/io/lbry/browser/tasks/verification/TwitterAccessTokenTask.java delete mode 100644 app/src/main/java/io/lbry/browser/tasks/verification/TwitterRequestTokenTask.java diff --git a/app/build.gradle b/app/build.gradle index 6c5d911d..4b1a2716 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,17 +40,7 @@ android { } buildTypes { - debug { - Properties twitterProps = new Properties() - twitterProps.load(project.file('twitter.properties').newDataInputStream()) - resValue "string", "TWITTER_CONSUMER_KEY", "\"${twitterProps.getProperty("twitterConsumerKey")}\"" - resValue "string", "TWITTER_CONSUMER_SECRET", "\"${twitterProps.getProperty("twitterConsumerSecret")}\"" - } release { - Properties twitterProps = new Properties() - twitterProps.load(project.file('twitter.properties').newDataInputStream()) - resValue "string", "TWITTER_CONSUMER_KEY", "\"${twitterProps.getProperty("twitterConsumerKey")}\"" - resValue "string", "TWITTER_CONSUMER_SECRET", "\"${twitterProps.getProperty("twitterConsumerSecret")}\"" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } @@ -92,9 +82,6 @@ dependencies { implementation 'com.github.bumptech.glide:glide:4.11.0' implementation 'com.squareup.okhttp3:okhttp:4.4.1' - implementation 'com.google.oauth-client:google-oauth-client:1.30.4' - - implementation 'com.android.billingclient:billing:3.0.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.google.android.exoplayer:exoplayer-core:2.11.4' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 885fb00e..aee112fa 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,6 @@ - specialRouteFragmentClassMap; @@ -228,7 +215,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener public static boolean startingPermissionRequest = false; public static boolean startingSignInFlowActivity = false; - private BillingClient billingClient; @Getter private boolean enteringPIPMode = false; private boolean fullSyncInProgress = false; @@ -406,24 +392,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - // setup the billing client in main activity (to handle cases where the verification purchase flow may have been interrupted) - billingClient = BillingClient.newBuilder(this) - .setListener(new PurchasesUpdatedListener() { - @Override - public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List purchases) { - int responseCode = billingResult.getResponseCode(); - if (responseCode == BillingClient.BillingResponseCode.OK && purchases != null) - { - for (Purchase purchase : purchases) { - handlePurchase(purchase); - } - } - } - }) - .enablePendingPurchases() - .build(); - establishBillingClientConnection(); - playerNotificationManager = new PlayerNotificationManager( this, LbrynetService.NOTIFICATION_CHANNEL_ID, PLAYBACK_NOTIFICATION_ID, new PlayerNotificationDescriptionAdapter()); @@ -1055,7 +1023,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener @Override protected void onResume() { super.onResume(); - checkPurchases(); enteringPIPMode = false; applyNavbarSigninPadding(); @@ -1078,33 +1045,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener }*/ } - private void checkPurchases() { - if (billingClient != null) { - Purchase.PurchasesResult result = billingClient.queryPurchases(BillingClient.SkuType.INAPP); - if (result.getPurchasesList() != null) { - for (Purchase purchase : result.getPurchasesList()) { - handlePurchase(purchase); - } - } - } - } - - private void handlePurchase(Purchase purchase) { - handleBillingPurchase(purchase, billingClient, MainActivity.this, null, new RewardVerifiedHandler() { - @Override - public void onSuccess(RewardVerified rewardVerified) { - if (Lbryio.currentUser != null) { - Lbryio.currentUser.setRewardApproved(rewardVerified.isRewardApproved()); - } - } - - @Override - public void onError(Exception error) { - // pass - } - }); - } - private void checkPendingOpens() { if (pendingFollowingReload) { loadFollowingContent(); @@ -2098,7 +2038,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener intentFilter.addAction(ACTION_OPEN_REWARDS_PAGE); intentFilter.addAction(ACTION_PUBLISH_SUCCESSFUL); intentFilter.addAction(ACTION_SAVE_SHARED_USER_STATE); - intentFilter.addAction(LbrynetMessagingService.ACTION_NOTIFICATION_RECEIVED); requestsReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -2119,8 +2058,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener saveSharedUserState(); } else if (ACTION_PUBLISH_SUCCESSFUL.equalsIgnoreCase(action)) { openPublishesOnSuccessfulPublish(); - } else if (LbrynetMessagingService.ACTION_NOTIFICATION_RECEIVED.equalsIgnoreCase(action)) { - handleNotificationReceived(intent); } } @@ -3397,53 +3334,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener return (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED); } - private void establishBillingClientConnection() { - if (billingClient != null) { - billingClient.startConnection(new BillingClientStateListener() { - @Override - public void onBillingSetupFinished(@NonNull BillingResult billingResult) { - if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { - // no need to do anything here. purchases are always checked server-side - checkPurchases(); - } - } - - @Override - public void onBillingServiceDisconnected() { - establishBillingClientConnection(); - } - }); - } - } - - public static void handleBillingPurchase( - Purchase purchase, - BillingClient billingClient, - Context context, - View progressView, - RewardVerifiedHandler handler) { - String sku = purchase.getSku(); - if (SKU_SKIP.equalsIgnoreCase(sku)) { - // send purchase token for verification - if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED - /*&& isSignatureValid(purchase)*/) { - // consume the purchase - String purchaseToken = purchase.getPurchaseToken(); - ConsumeParams consumeParams = ConsumeParams.newBuilder().setPurchaseToken(purchaseToken).build(); - billingClient.consumeAsync(consumeParams, new ConsumeResponseListener() { - @Override - public void onConsumeResponse(@NonNull BillingResult billingResult, @NonNull String s) { - - } - }); - - // send the purchase token to the backend to complete verification - AndroidPurchaseTask task = new AndroidPurchaseTask(purchaseToken, progressView, context, handler); - task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - } - } - public interface BackPressInterceptor { boolean onBackPressed(); } diff --git a/app/src/main/java/io/lbry/browser/VerificationActivity.java b/app/src/main/java/io/lbry/browser/VerificationActivity.java index 2950dd3b..fdd1b923 100644 --- a/app/src/main/java/io/lbry/browser/VerificationActivity.java +++ b/app/src/main/java/io/lbry/browser/VerificationActivity.java @@ -10,25 +10,12 @@ import android.os.Bundle; import android.os.Handler; import android.view.View; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.widget.ViewPager2; -import com.android.billingclient.api.BillingClient; -import com.android.billingclient.api.BillingClientStateListener; -import com.android.billingclient.api.BillingFlowParams; -import com.android.billingclient.api.BillingResult; -import com.android.billingclient.api.Purchase; -import com.android.billingclient.api.PurchasesUpdatedListener; -import com.android.billingclient.api.SkuDetails; -import com.android.billingclient.api.SkuDetailsParams; -import com.android.billingclient.api.SkuDetailsResponseListener; import com.google.android.material.snackbar.Snackbar; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import io.lbry.browser.adapter.VerificationPagerAdapter; import io.lbry.browser.listener.SignInListener; @@ -48,59 +35,11 @@ public class VerificationActivity extends FragmentActivity implements SignInList public static final int VERIFICATION_FLOW_REWARDS = 2; public static final int VERIFICATION_FLOW_WALLET = 3; - private BillingClient billingClient; private BroadcastReceiver sdkReceiver; private String email; private boolean signedIn; private int flow; - private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() { - @Override - public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List purchases) { - int responseCode = billingResult.getResponseCode(); - if (responseCode == BillingClient.BillingResponseCode.OK && purchases != null) - { - for (Purchase purchase : purchases) { - if (MainActivity.SKU_SKIP.equalsIgnoreCase(purchase.getSku())) { - showLoading(); - MainActivity.handleBillingPurchase( - purchase, - billingClient, - VerificationActivity.this, null, new RewardVerifiedHandler() { - @Override - public void onSuccess(RewardVerified rewardVerified) { - if (Lbryio.currentUser != null) { - Lbryio.currentUser.setRewardApproved(rewardVerified.isRewardApproved()); - } - - if (!rewardVerified.isRewardApproved()) { - // show pending purchase message (possible slow card tx) - Snackbar.make(findViewById(R.id.verification_pager), R.string.purchase_request_pending, Snackbar.LENGTH_LONG).show(); - } else { - Snackbar.make(findViewById(R.id.verification_pager), R.string.reward_verification_successful, Snackbar.LENGTH_LONG).show(); - } - - setResult(RESULT_OK); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - finish(); - } - }, 3000); - } - - @Override - public void onError(Exception error) { - showFetchUserError(getString(R.string.purchase_request_failed_error)); - hideLoading(); - } - }); - } - } - } - } - }; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -137,12 +76,6 @@ public class VerificationActivity extends FragmentActivity implements SignInList }; registerReceiver(sdkReceiver, filter); - billingClient = BillingClient.newBuilder(this) - .setListener(purchasesUpdatedListener) - .enablePendingPurchases() - .build(); - establishBillingClientConnection(); - setContentView(R.layout.activity_verification); ViewPager2 viewPager = findViewById(R.id.verification_pager); viewPager.setUserInputEnabled(false); @@ -159,24 +92,6 @@ public class VerificationActivity extends FragmentActivity implements SignInList }); } - private void establishBillingClientConnection() { - if (billingClient != null) { - billingClient.startConnection(new BillingClientStateListener() { - @Override - public void onBillingSetupFinished(@NonNull BillingResult billingResult) { - if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { - // no need to do anything here. purchases are always checked server-side - } - } - - @Override - public void onBillingServiceDisconnected() { - establishBillingClientConnection(); - } - }); - } - } - public void onResume() { super.onResume(); LbryAnalytics.setCurrentScreen(this, "Verification", "Verification"); @@ -385,28 +300,6 @@ public class VerificationActivity extends FragmentActivity implements SignInList @Override public void onSkipQueueAction() { - if (billingClient != null) { - List skuList = new ArrayList<>(); - skuList.add(MainActivity.SKU_SKIP); - - SkuDetailsParams detailsParams = SkuDetailsParams.newBuilder(). - setType(BillingClient.SkuType.INAPP). - setSkusList(skuList).build(); - billingClient.querySkuDetailsAsync(detailsParams, new SkuDetailsResponseListener() { - @Override - public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List list) { - if (list != null && list.size() > 0) { - // we only queried one product, so it should be the first item in the list - SkuDetails skuDetails = list.get(0); - - // launch the billing flow for skip queue - BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder(). - setSkuDetails(skuDetails).build(); - billingClient.launchBillingFlow(VerificationActivity.this, billingFlowParams); - } - } - }); - } } @Override diff --git a/app/src/main/java/io/lbry/browser/model/TwitterOauth.java b/app/src/main/java/io/lbry/browser/model/TwitterOauth.java deleted file mode 100644 index 9d0bc847..00000000 --- a/app/src/main/java/io/lbry/browser/model/TwitterOauth.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.lbry.browser.model; - -import lombok.Data; - -@Data -public class TwitterOauth { - private String oauthToken; - private String oauthTokenSecret; -} diff --git a/app/src/main/java/io/lbry/browser/tasks/TwitterOauthHandler.java b/app/src/main/java/io/lbry/browser/tasks/TwitterOauthHandler.java deleted file mode 100644 index 49357ced..00000000 --- a/app/src/main/java/io/lbry/browser/tasks/TwitterOauthHandler.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.lbry.browser.tasks; - -import io.lbry.browser.model.TwitterOauth; - -public interface TwitterOauthHandler { - void onSuccess(TwitterOauth twitterOauth); - void onError(Exception error); -} diff --git a/app/src/main/java/io/lbry/browser/tasks/lbryinc/AndroidPurchaseTask.java b/app/src/main/java/io/lbry/browser/tasks/lbryinc/AndroidPurchaseTask.java deleted file mode 100644 index 67a2ba8e..00000000 --- a/app/src/main/java/io/lbry/browser/tasks/lbryinc/AndroidPurchaseTask.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.lbry.browser.tasks.lbryinc; - -import android.content.Context; -import android.os.AsyncTask; -import android.view.View; - -import com.google.gson.FieldNamingPolicy; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; - -import org.json.JSONObject; - -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.Map; - -import io.lbry.browser.MainActivity; -import io.lbry.browser.model.lbryinc.RewardVerified; -import io.lbry.browser.tasks.RewardVerifiedHandler; -import io.lbry.browser.utils.Helper; -import io.lbry.browser.utils.Lbryio; -import okhttp3.Response; - -public class AndroidPurchaseTask extends AsyncTask { - private Context context; - private View progressView; - private String purchaseToken; - private RewardVerifiedHandler handler; - private Exception error; - - public AndroidPurchaseTask(String purchaseToken, View progressView, Context context, RewardVerifiedHandler handler) { - this.purchaseToken = purchaseToken; - this.progressView = progressView; - this.context = context; - this.handler = handler; - } - - protected void onPreExecute() { - Helper.setViewVisibility(progressView, View.VISIBLE); - } - - protected RewardVerified doInBackground(Void... params) { - try { - Map options = new HashMap<>(); - options.put("purchase_token", purchaseToken); - - JSONObject object = (JSONObject) Lbryio.parseResponse(Lbryio.call("verification", "android_purchase", options, context)); - Type type = new TypeToken(){}.getType(); - Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - return gson.fromJson(object.toString(), type); - } catch (Exception ex) { - error = ex; - return null; - } - } - - protected void onPostExecute(RewardVerified result) { - Helper.setViewVisibility(progressView, View.GONE); - if (handler != null) { - if (result != null) { - handler.onSuccess(result); - } else { - handler.onError(error); - } - } - } -} diff --git a/app/src/main/java/io/lbry/browser/tasks/lbryinc/TwitterVerifyTask.java b/app/src/main/java/io/lbry/browser/tasks/lbryinc/TwitterVerifyTask.java deleted file mode 100644 index 265125e3..00000000 --- a/app/src/main/java/io/lbry/browser/tasks/lbryinc/TwitterVerifyTask.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.lbry.browser.tasks.lbryinc; - -import android.content.Context; -import android.os.AsyncTask; -import android.view.View; - -import com.google.gson.FieldNamingPolicy; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; - -import org.json.JSONObject; - -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.Map; - -import io.lbry.browser.model.TwitterOauth; -import io.lbry.browser.model.lbryinc.RewardVerified; -import io.lbry.browser.tasks.RewardVerifiedHandler; -import io.lbry.browser.utils.Helper; -import io.lbry.browser.utils.Lbryio; - -public class TwitterVerifyTask extends AsyncTask { - private Context context; - private View progressView; - private TwitterOauth twitterOauth; - private RewardVerifiedHandler handler; - private Exception error; - - public TwitterVerifyTask(TwitterOauth twitterOauth, View progressView, Context context, RewardVerifiedHandler handler) { - this.twitterOauth = twitterOauth; - this.progressView = progressView; - this.context = context; - this.handler = handler; - } - - protected void onPreExecute() { - Helper.setViewVisibility(progressView, View.VISIBLE); - } - - protected RewardVerified doInBackground(Void... params) { - try { - Map options = new HashMap<>(); - options.put("oauth_token", twitterOauth.getOauthToken()); - options.put("oauth_token_secret", twitterOauth.getOauthTokenSecret()); - - JSONObject object = (JSONObject) Lbryio.parseResponse(Lbryio.call("verification", "twitter_verify", options, context)); - Type type = new TypeToken(){}.getType(); - Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - return gson.fromJson(object.toString(), type); - } catch (Exception ex) { - error = ex; - return null; - } - } - - protected void onPostExecute(RewardVerified result) { - Helper.setViewVisibility(progressView, View.GONE); - if (handler != null) { - if (result != null) { - handler.onSuccess(result); - } else { - handler.onError(error); - } - } - } -} diff --git a/app/src/main/java/io/lbry/browser/tasks/verification/TwitterAccessTokenTask.java b/app/src/main/java/io/lbry/browser/tasks/verification/TwitterAccessTokenTask.java deleted file mode 100644 index c114d8f0..00000000 --- a/app/src/main/java/io/lbry/browser/tasks/verification/TwitterAccessTokenTask.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.lbry.browser.tasks.verification; - -import android.os.AsyncTask; - -import com.google.api.client.auth.oauth.OAuthHmacSigner; -import com.google.api.client.auth.oauth.OAuthParameters; -import com.google.api.client.http.GenericUrl; - -import io.lbry.browser.VerificationActivity; -import io.lbry.browser.model.TwitterOauth; -import io.lbry.browser.tasks.TwitterOauthHandler; -import io.lbry.browser.utils.Helper; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; - -public class TwitterAccessTokenTask extends AsyncTask { - private static final String ENDPOINT = "https://api.twitter.com/oauth/access_token"; - - private Exception error; - private String oauthParams; - private TwitterOauthHandler handler; - - public TwitterAccessTokenTask(String oauthParams, TwitterOauthHandler handler) { - this.oauthParams = oauthParams; - this.handler = handler; - } - - public String doInBackground(Void... params) { - try { - String url = String.format("%s?%s", ENDPOINT, oauthParams); - RequestBody body = RequestBody.create(new byte[0]); - Request request = new Request.Builder().url(url).post(body).build(); - - OkHttpClient client = new OkHttpClient.Builder().build(); - Response response = client.newCall(request).execute(); - return response.body().string(); - } catch (Exception ex) { - error = ex; - return null; - } - } - - protected void onPostExecute(String response) { - if (!Helper.isNullOrEmpty(response)) { - String[] pairs = response.split("&"); - TwitterOauth twitterOauth = new TwitterOauth(); - for (String pair : pairs) { - String[] parts = pair.split("="); - if (parts.length != 2) { - continue; - } - String key = parts[0]; - String value = parts[1]; - if ("oauth_token".equalsIgnoreCase(key)) { - twitterOauth.setOauthToken(value); - } else if ("oauth_token_secret".equalsIgnoreCase(key)) { - twitterOauth.setOauthTokenSecret(value); - } - } - handler.onSuccess(twitterOauth); - } else { - handler.onError(error); - } - } -} diff --git a/app/src/main/java/io/lbry/browser/tasks/verification/TwitterRequestTokenTask.java b/app/src/main/java/io/lbry/browser/tasks/verification/TwitterRequestTokenTask.java deleted file mode 100644 index 4082f80b..00000000 --- a/app/src/main/java/io/lbry/browser/tasks/verification/TwitterRequestTokenTask.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.lbry.browser.tasks.verification; - -import android.net.Uri; -import android.os.AsyncTask; -import android.util.Base64; - -import com.google.api.client.auth.oauth.OAuthHmacSigner; -import com.google.api.client.auth.oauth.OAuthParameters; -import com.google.api.client.http.GenericUrl; - -import java.nio.charset.StandardCharsets; - -import io.lbry.browser.VerificationActivity; -import io.lbry.browser.model.TwitterOauth; -import io.lbry.browser.tasks.TwitterOauthHandler; -import io.lbry.browser.utils.Helper; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; - -public class TwitterRequestTokenTask extends AsyncTask { - private static final String ENDPOINT = "https://api.twitter.com/oauth/request_token"; - - private String consumerKey; - private String consumerSecret; - private Exception error; - private TwitterOauthHandler handler; - - public TwitterRequestTokenTask(String consumerKey, String consumerSecret, TwitterOauthHandler handler) { - this.consumerKey = consumerKey; - this.consumerSecret = consumerSecret; - this.handler = handler; - } - - public String doInBackground(Void... params) { - try { - - OAuthHmacSigner signer = new OAuthHmacSigner(); - signer.clientSharedSecret = new String( - Base64.decode(consumerSecret, Base64.NO_WRAP), StandardCharsets.UTF_8.name()); - - OAuthParameters oauthParams = new OAuthParameters(); - oauthParams.callback = "https://lbry.tv"; - oauthParams.consumerKey = new String( - Base64.decode(consumerKey, Base64.NO_WRAP), StandardCharsets.UTF_8.name());; - oauthParams.signatureMethod = "HMAC-SHA-1"; - oauthParams.signer = signer; - oauthParams.computeNonce(); - oauthParams.computeTimestamp(); - oauthParams.computeSignature("POST", new GenericUrl(ENDPOINT)); - - RequestBody body = RequestBody.create(new byte[0]); - Request request = new Request.Builder().url(ENDPOINT).addHeader( - "Authorization", oauthParams.getAuthorizationHeader()).post(body).build(); - - OkHttpClient client = new OkHttpClient.Builder().build(); - Response response = client.newCall(request).execute(); - return response.body().string(); - } catch (Exception ex) { - error = ex; - return null; - } - } - - protected void onPostExecute(String response) { - if (!Helper.isNullOrEmpty(response)) { - String[] pairs = response.split("&"); - TwitterOauth twitterOauth = new TwitterOauth(); - for (String pair : pairs) { - String[] parts = pair.split("="); - if (parts.length != 2) { - continue; - } - String key = parts[0]; - String value = parts[1]; - if ("oauth_token".equalsIgnoreCase(key)) { - twitterOauth.setOauthToken(value); - } else if ("oauth_token_secret".equalsIgnoreCase(key)) { - twitterOauth.setOauthTokenSecret(value); - } - } - handler.onSuccess(twitterOauth); - } else { - handler.onError(error); - } - } -} diff --git a/app/src/main/java/io/lbry/browser/ui/verification/ManualVerificationFragment.java b/app/src/main/java/io/lbry/browser/ui/verification/ManualVerificationFragment.java index 7bc09379..d7c6a146 100644 --- a/app/src/main/java/io/lbry/browser/ui/verification/ManualVerificationFragment.java +++ b/app/src/main/java/io/lbry/browser/ui/verification/ManualVerificationFragment.java @@ -1,74 +1,26 @@ package io.lbry.browser.ui.verification; -import android.content.Context; -import android.graphics.Color; -import android.os.AsyncTask; import android.os.Bundle; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.LinearLayout; -import android.widget.PopupWindow; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; -import com.google.android.material.button.MaterialButton; -import com.google.android.material.snackbar.Snackbar; - import io.lbry.browser.R; import io.lbry.browser.listener.SignInListener; -import io.lbry.browser.model.TwitterOauth; -import io.lbry.browser.model.lbryinc.RewardVerified; -import io.lbry.browser.tasks.RewardVerifiedHandler; -import io.lbry.browser.tasks.TwitterOauthHandler; -import io.lbry.browser.tasks.lbryinc.TwitterVerifyTask; -import io.lbry.browser.tasks.verification.TwitterAccessTokenTask; -import io.lbry.browser.tasks.verification.TwitterRequestTokenTask; import io.lbry.browser.utils.Helper; -import io.lbry.browser.utils.Lbryio; import lombok.Setter; public class ManualVerificationFragment extends Fragment { @Setter private SignInListener listener; - private PopupWindow popup; - private View mainView; - private View loadingView; - - private TwitterOauth currentOauth; - private boolean twitterOauthInProgress = false; - - private static final double SKIP_QUEUE_PRICE = 4.99; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_verification_manual, container, false); - mainView = root.findViewById(R.id.verification_manual_main); - loadingView = root.findViewById(R.id.verification_manual_loading); - - Context context = getContext(); - MaterialButton buttonSkipQueue = root.findViewById(R.id.verification_manual_skip_queue); - buttonSkipQueue.setText(context.getString(R.string.skip_queue_button_text, String.valueOf(SKIP_QUEUE_PRICE))); - Helper.applyHtmlForTextView(root.findViewById(R.id.verification_manual_discord_verify)); - root.findViewById(R.id.verification_manual_twitter_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - // start twitter verification - if (currentOauth != null) { - // Twitter three-legged oauth already completed, verify directly - twitterVerify(currentOauth); - } else { - // show twitter sign-in flow - twitterVerificationFlow(); - } - } - }); - root.findViewById(R.id.verification_manual_continue_button).setOnClickListener(new View.OnClickListener() { @Override @@ -79,205 +31,6 @@ public class ManualVerificationFragment extends Fragment { } }); - root.findViewById(R.id.verification_manual_skip_queue).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (listener != null) { - listener.onSkipQueueAction(); - } - } - }); - return root; } - - private void twitterVerificationFlow() { - twitterOauthInProgress = true; - if (listener != null) { - listener.onManualProgress(twitterOauthInProgress); - } - showLoading(); - String consumerKey = getResources().getString(R.string.TWITTER_CONSUMER_KEY); - String consumerSecret = getResources().getString(R.string.TWITTER_CONSUMER_SECRET); - TwitterRequestTokenTask task = new TwitterRequestTokenTask(consumerKey, consumerSecret, new TwitterOauthHandler() { - @Override - public void onSuccess(TwitterOauth twitterOauth) { - twitterOauthInProgress = false; - if (listener != null) { - listener.onManualProgress(twitterOauthInProgress); - } - showTwitterAuthenticateWithToken(twitterOauth.getOauthToken()); - } - - @Override - public void onError(Exception error) { - handleFlowError(null); - } - }); - task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - - public void showLoading() { - Helper.setViewVisibility(mainView, View.INVISIBLE); - Helper.setViewVisibility(loadingView, View.VISIBLE); - } - - public void hideLoading() { - Helper.setViewVisibility(mainView, View.VISIBLE); - Helper.setViewVisibility(loadingView, View.GONE); - } - - private void showTwitterAuthenticateWithToken(String oauthToken) { - Context context = getContext(); - if (context != null) { - WebView webView = new WebView(context); - webView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); - webView.loadUrl(String.format("https://api.twitter.com/oauth/authorize?oauth_token=%s", oauthToken)); - webView.setWebViewClient(new WebViewClient() { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - if (url.startsWith("https://lbry.tv") || url.equalsIgnoreCase("https://twitter.com/home") /* Return to Twitter */) { - if (url.startsWith("https://lbry.tv") && url.contains("oauth_token") && url.contains("oauth_verifier")) { - // finish 3-legged oauth - twitterOauthInProgress = true; - listener.onManualProgress(twitterOauthInProgress); - finishTwitterOauth(url); - } - - if (popup != null) { - popup.dismiss(); - } - return false; - } - - view.loadUrl(url); - return true; - } - }); - - View popupView = LayoutInflater.from(context).inflate(R.layout.popup_webview, null); - ((LinearLayout) popupView.findViewById(R.id.popup_webivew_container)).addView(webView); - popupView.findViewById(R.id.popup_cancel_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!twitterOauthInProgress && popup != null) { - popup.dismiss(); - hideLoading(); - } - } - }); - - float scale = getResources().getDisplayMetrics().density; - popup = new PopupWindow(context); - popup.setOnDismissListener(new PopupWindow.OnDismissListener() { - @Override - public void onDismiss() { - if (!twitterOauthInProgress) { - hideLoading(); - } - popup = null; - } - }); - popup.setWidth(Helper.getScaledValue(340, scale)); - popup.setHeight(Helper.getScaledValue(480, scale)); - popup.setContentView(popupView); - - View parent = getView(); - popup.setFocusable(true); - popup.showAtLocation(parent, Gravity.CENTER, 0, 0); - popup.update(); - } - } - - private void finishTwitterOauth(String callbackUrl) { - String params = callbackUrl.substring(callbackUrl.indexOf('?') + 1); - TwitterAccessTokenTask task = new TwitterAccessTokenTask(params, new TwitterOauthHandler() { - @Override - public void onSuccess(TwitterOauth twitterOauth) { - // send request to finish verifying - currentOauth = twitterOauth; - twitterVerify(twitterOauth); - } - - @Override - public void onError(Exception error) { - handleFlowError(null); - } - }); - task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - - private void twitterVerify(TwitterOauth twitterOauth) { - Context context = getContext(); - if (context != null) { - showLoading(); - twitterOauthInProgress = true; - if (listener != null) { - listener.onManualProgress(twitterOauthInProgress); - } - - TwitterVerifyTask task = new TwitterVerifyTask(twitterOauth, null, context, new RewardVerifiedHandler() { - @Override - public void onSuccess(RewardVerified rewardVerified) { - twitterOauthInProgress = false; - if (listener != null) { - listener.onManualProgress(twitterOauthInProgress); - } - - if (Lbryio.currentUser != null) { - Lbryio.currentUser.setRewardApproved(rewardVerified.isRewardApproved()); - } - if (rewardVerified.isRewardApproved()) { - if (listener != null) { - listener.onTwitterVerified(); - } - } else { - View root = getView(); - if (root != null) { - // reward approved wasn't set to true - Snackbar.make(root, getString(R.string.twitter_verification_not_approved), Snackbar.LENGTH_LONG). - setTextColor(Color.WHITE). - setBackgroundTint(Color.RED).show(); - } - hideLoading(); - } - } - - @Override - public void onError(Exception error) { - handleFlowError(error != null ? error.getMessage() : null); - } - }); - task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } else { - twitterOauthInProgress = false; - if (listener != null) { - listener.onManualProgress(twitterOauthInProgress); - } - hideLoading(); - } - } - - private void handleFlowError(String extra) { - hideLoading(); - twitterOauthInProgress = false; - if (listener != null) { - listener.onManualProgress(twitterOauthInProgress); - } - showFlowError(extra); - } - - private void showFlowError(String extra) { - Context context = getContext(); - View root = getView(); - if (context != null && root != null) { - String message = !Helper.isNullOrEmpty(extra) ? - getString(R.string.twitter_account_ineligible, extra) : - getString(R.string.twitter_verification_failed); - - Snackbar.make(root, message, Snackbar.LENGTH_LONG). - setTextColor(Color.WHITE). - setBackgroundTint(Color.RED).show(); - } - } } diff --git a/app/src/main/res/layout/fragment_verification_manual.xml b/app/src/main/res/layout/fragment_verification_manual.xml index b9e11c25..9ad8f83f 100644 --- a/app/src/main/res/layout/fragment_verification_manual.xml +++ b/app/src/main/res/layout/fragment_verification_manual.xml @@ -31,70 +31,6 @@ android:text="@string/reward_verification" android:textColor="@color/white" android:textFontWeight="300" /> - - - - - - - - - - - - No m\'interessa Verificació de recompenses manual Verificació de recompenses - Verificació de xarxes socials - Salta\'t la cua - Salta-te-la per %1$s$ Aquest compte ha de passar per una revissió abans que puguis participar en el programa de recompenses. Això pot trigar des d\'uns minuts fins a alguns dies. - Et pots verificar instantàniament per poder participar en el programa de recompenses emprant el teu compte de Twitter, o saltant-te la cua de la verificació manual. - Verificació mitjançant Twitter - Pots verificar-te instantàniament emprant el teu compte de Twitter. La teva direcció de correu electrònic amb Twitter ha de coincidir amb la direcció que has proveït, i el teu compte ha d\'estar actiu. - Verifica mitjançant Twitter - Salta\'t la cua - Salta\'t la verificació manual pagant una quota per tal de participar en el programa de recompenses immediatament. Sisplau, demana que et verifiquin al <a href=\"https://discordapp.com/invite/Z3bERWA\">servidor de Discord de LBRY</a>. Una verificació manual pot trigar des d\'alguns minuts fins a diversos dies. Gaudeix del contingut gratis mentrestant! Verifica el número de telèfon @@ -444,9 +435,6 @@ El compte d\'usuari no s\'ha pogut recuperar. Sisplau, torna a internar-ho més tard. La teva petició de compra encara s\'està processant. Sisplau, envia\'ns un correu a support@lbry.com. La teva petició de compra no s\'ha pogut completar en aquest moment. Sisplau, envia\'ns un correu a support@lbry.com - El teu compte de Twitter no és elegible en aquest moment: %1$s - El teu compte no ha estat aprovat pel programa de recompenses. Sisplau, torna a provar-ho més tard. - La verificació mitjançant Twitter ha fallat. Sisplau, torna a intentar-ho més tard. Ets elegible per participar en el programa de recompenses! diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 391a04e0..3062208b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -423,16 +423,7 @@ Pas intéressé Vérification manuelle des récompenses Vérification des récompenses - Vérification des réseaux sociaux - Passer la file d\'attente - Passer pour $%1$s Ce compte doit être examiné avant de pouvoir participer au programme de récompenses. Cela peut prendre de quelques minutes à plusieurs jours. - Vous pouvez être instantanément vérifié pour pouvoir participer au programme de récompenses en utilisant votre compte Twitter ou en sautant la file d\'attente de vérification manuelle. - Vérification Twitter - Soyez instantanément vérifié en utilisant votre compte Twitter. Votre adresse e-mail Twitter doit correspondre à l\'e-mail que vous avez fourni et votre compte doit être actif. - Vérifier avec Twitter - Passer la file d\'attente - Évitez la file d\'attente de vérification manuelle en payant des frais afin de commencer immédiatement à participer au programme de récompenses. Veuillez demander à être vérifié sur le <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server<Une révision manuelle peut durer de quelques minutes à plusieurs jours./a>. Veuillez profiter du contenu gratuit en attendant! Vérifier le numéro de téléphone @@ -444,9 +435,6 @@ Le compte utilisateur n\'a pas pu être récupéré pour le moment. Veuillez réessayer plus tard. Votre demande d\'achat est toujours en cours de traitement. Veuillez envoyer un e-mail à support@lbry.com. Votre demande d\'achat n\'a pas pu être traitée pour le moment. Veuillez envoyer un e-mail à support@lbry.com. - Votre compte Twitter n\'est pas éligible pour le moment:%1$s - Votre compte n\'a pas été approuvé pour le programme de récompenses. Veuillez réessayer plus tard. - La vérification Twitter a échoué. Veuillez réessayer plus tard. Vous êtes désormais éligible pour participer au programme de récompenses! diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index b2fef2d6..0d69f25b 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -412,16 +412,7 @@ Tidak tertarik Verifikasi Hadiah Manual Verifikasi Hadiah - Verifikasi Media Sosial - Lewati Antrian - Lewati untuk $%1$s Akun ini harus menjalani peninjauan sebelum Anda dapat berpartisipasi dalam program hadiah. Ini bisa memakan waktu mulai dari beberapa menit hingga beberapa hari. - Anda dapat langsung diverifikasi untuk dapat berpartisipasi dalam program hadiah menggunakan akun Twitter Anda atau melewati antrean verifikasi manual. - Verifikasi Twitter - Dapatkan verifikasi langsung menggunakan akun Twitter Anda. Alamat email Twitter Anda harus sama dengan email yang Anda berikan dan akun Anda harus aktif. - Verifikasi dengan Twitter - Lewati Antrian - Lewati antrean verifikasi manual dengan membayar biaya untuk segera mulai berpartisipasi dalam program hadiah. Silakan meminta untuk diverifikasi di <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>.Peninjauan manual dapat berlangsung dari beberapa menit hingga beberapa hari. Silakan nikmati konten gratis sementara itu! Verifikasi Nomor Telepon @@ -433,9 +424,6 @@ Akun pengguna tidak dapat diambil saat ini. Silakan coba lagi nanti. Permintaan pembelian Anda masih diproses. Silakan kirim email ke support@lbry.com. Permintaan pembelian Anda tidak dapat diselesaikan saat ini. Silakan kirim email ke support@lbry.com. - Akun Twitter Anda tidak memenuhi syarat untuk saat ini:%1$s - Akun Anda tidak disetujui untuk program hadiah. Silakan coba lagi nanti. - Verifikasi Twitter gagal. Silakan coba lagi nanti. Sekarang Anda berhak untuk berpartisipasi dalam program hadiah! diff --git a/app/src/main/res/values-jv/strings.xml b/app/src/main/res/values-jv/strings.xml index a06aaa11..eb9db732 100644 --- a/app/src/main/res/values-jv/strings.xml +++ b/app/src/main/res/values-jv/strings.xml @@ -412,16 +412,7 @@ Ora kasengsem Verifikasi Hadiah Manual Verifikasino Hadiahe - Verifikasino Media Sosial - Nglewati ing Antrian - Mlebet $%1$s Akun iki kudu ngalami review sadurunge sampeyan bisa melu ing program hadiah. Iki bisa njupuk ing endi wae saka sawetara menit nganti pirang-pirang dina. - Sampeyan bisa langsung diverifikasi supaya bisa melu program hadiah kanthi nggunakake akun Twitter utawa nglumpukake antrian verifikasi manual. - Verifikasi Twitter - Cepet langsung diverifikasi nggunakake akun Twitter sampeyan. Alamat email Twitter sampeyan kudu cocog karo email sing diwenehake lan akun sampeyan kudu aktif. - Verifikasi karo Twitter - Nglewati ing Antrian - Langsung antrian verifikasi manual kanthi mbayar ragad supaya miwiti melu program hadiah langsung. Nyuwun sewengi ing kene <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Review manual bisa dideleng saka sawetara menit nganti pirang-pirang dina. Mumpung konten gratis! Verifikasi Nomer Telpon @@ -433,9 +424,6 @@ Akun pangguna ora bisa dijupuk maneh ing wektu iki. Coba maneh mengko. Panjaluk tuku sampeyan isih diproses. Mangga ngirim email menyang support@lbry.com. Panjaluk tuku sampeyan ora bisa dirampungake ing wektu iki. Mangga ngirim email menyang support@lbry.com. - Akun Twitter sampeyan ora layak ing wektu iki: %1$s - Akun sampeyan ora disetujoni kanggo program hadiah. Coba maneh mengko. - Verifikasi Twitter gagal. Coba maneh mengko. Sampeyan saiki bisa melu program penghargaan! diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index bd0effcb..d74de770 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -423,16 +423,7 @@ Niet geïnteresseerd Handmatige Beloningsverificatie Beloningsverificatie - Sociale Media Verificatie - Sla de Wachtrij over - Sla over voor $%1$s Dit account moet worden beoordeeld voordat u kunt deelnemen aan het beloningsprogramma. Dit kan enkele minuten tot meerdere dagen duren. - U kunt onmiddellijk worden geverifieerd om te kunnen deelnemen aan het beloningsprogramma met uw Twitter-account of door de wachtrij voor handmatige verificatie over te slaan. - Twitter-verificatie - Word onmiddellijk geverifieerd met uw Twitter-account. Uw Twitter e-mailadres moet overeenkomen met het e-mailadres dat u hebt opgegeven en uw account moet actief zijn. - Verifieer met Twitter - Sla de Wachtrij over - Sla de wachtrij voor handmatige verificatie over door een vergoeding te betalen, zodat u direct kunt deelnemen aan het beloningsprogramma. Verzoek om te worden geverifieerd in de <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Een handmatige beoordeling kan enkele minuten tot enkele dagen duren. Geniet ondertussen van gratis inhoud! Verifieer Telefoonnummer @@ -444,9 +435,6 @@ Gebruikersaccount kan op dit moment niet worden opgehaald. Probeer het later opnieuw. Uw aankoopverzoek wordt nog verwerkt. Stuur een e-mail naar support@lbry.com. Uw aankoopverzoek kan op dit moment niet worden voltooid. Stuur een e-mail naar support@lbry.com. - Uw Twitter-account komt op dit moment niet in aanmerking: %1$s - Uw account is niet goedgekeurd voor het beloningsprogramma. Probeer het later opnieuw. - Twitter-verificatie mislukt. Probeer het later opnieuw. U komt nu in aanmerking om deel te nemen aan het beloningsprogramma! diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 43f79771..1a22ea65 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -423,16 +423,7 @@ Não estou interessado Verificação manual de recompensa Verificação de recompensa - Verificação de mídia social - Pular a fila - Pular para $%1$s Esta conta deve ser analisada antes de você participar do programa de recompensas. Isso pode levar de vários minutos a vários dias. - Você pode ser verificado instantaneamente para poder participar do programa de recompensas usando sua conta do Twitter ou pulando a fila de verificação manual. - Verificação do Twitter - Seja verificado instantaneamente usando sua conta do Twitter. Seu endereço de e-mail do Twitter deve corresponder ao e-mail que você forneceu e sua conta deve estar ativa. - Verifique com o Twitter - Pular a fila - Pule a fila de verificação manual pagando uma taxa para começar a participar do programa de recompensas imediatamente. Solicite para ser verificado no servidor LBRY Discord <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Server do Discord</a>. Uma revisão manual pode levar de vários minutos a vários dias. Por favor, aproveite o conteúdo gratuito enquanto isso! Verifique o número de telefone @@ -444,9 +435,6 @@ A conta do usuário não pôde ser recuperada neste momento. Por favor, tente novamente mais tarde. Sua solicitação de compra ainda está sendo processada. Envie um e-mail para support@lbry.com. Sua solicitação de compra não pôde ser concluída neste momento. Envie um e-mail para support@lbry.com. - Sua conta do Twitter não está qualificada no momento: %1$s - Sua conta não foi aprovada para o programa de recompensas. Por favor, tente novamente mais tarde. - A verificação do Twitter falhou. Por favor, tente novamente mais tarde. Agora você está qualificado para participar do programa de recompensas! diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index f1791cbd..99648beb 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -423,16 +423,7 @@ Não interessado Verificação manual de recompensas Verificação de Recompensas - Verificação de Mídia Social - Pular a fila - Pular a fila por $%1$s Esta conta deve ser revisada antes de você poder participar do programa de recompensas. Isso pode levar de alguns minutos ou até vários dias. - Você pode ser verificado instantaneamente para poder participar do programa de recompensas usando sua conta do Twitter ou pulando a fila de verificação manual. - Verificação do Twitter - Seja verificado instantaneamente usando sua conta do Twitter. Seu endereço de e-mail do Twitter deve corresponder ao e-mail que você forneceu e sua conta deve estar ativa. - Verificar com o Twitter - Pular a Fila - Pule a fila de verificação manual pagando uma taxa para começar a participar do programa de recompensas imediatamente. Please request to be verified on the <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Uma revisão manual pode levar de vários minutos a vários dias. Enquanto isso, aproveite o conteúdo gratuito! Verificar Número de Telefone @@ -444,9 +435,6 @@ Não foi possível recuperar a conta do usuário no momento. Por favor, tente novamente mais tarde. Sua solicitação de compra ainda está sendo processada. Envie um e-mail para support@lbry.com. Sua solicitação de compra não pôde ser concluída neste momento. Envie um e-mail para support@lbry.com. - Sua conta do Twitter não está qualificada no momento: %1$s - Sua conta não foi aprovada para o programa de recompensas. Por favor, tente novamente mais tarde. - A verificação do Twitter falhou. Por favor, tente novamente mais tarde. Agora você está qualificado para participar do programa de recompensas! diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index d4d9adae..da007bbf 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -445,16 +445,7 @@ Не интересно Ручное подтверждение наград Подтверждение наград - Верификация через социальные сети - Пропустить очередь - Пропустить за $%1$s Этот аккаунт должен проследовать проверке перед участием в программе вознаграждений. Это может занять от нескольких минут до нескольких дней. - Вы можете сразу пройти проверку для того, чтобы участвовать в программе наград, используя Ваш аккаунт в Твиттере или пропустив проверку вручную. - Проверка с помощью Твиттера - Пройдите проверку быстрее с помощью Вашего акккаунта в Твиттере. Адрес электронной почты этого аккаунта должен совпадать с адресом, который Вы предоставили ранее, а также аккаунт должен быть активен. - Верифицировать с помощью Твиттера - Пропустить очередь - Пропустить очередь проверки, заплатив небольшую сумму, чтобы незамедлительно принять участие в программе наград. Пожалуйста, запросите проверку в <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Проверка вручную может занять от пары минут до нескольких дней. Наслаждайтесь бесплатным контентом в любое время! Подтвердите номер телефона @@ -466,9 +457,6 @@ Не удалось получить информацию об аккаунте. Пожалуйста, попробуйте позже. Ваш запрос о покупке всё ещё обрабатывается. Пожалуйста, отправьте письмо на support@lbry.com. Ваш запрос о покупке не может быть обработан на данный момент. Пожалуйста, обратитесь к нам с письмом по адресу support@lbry.com. - Пока что Ваш аккаунт в Твиттере нам не подходит: %1$s - Ваш аккаунт не был подтверждён для участия в программе наград. Пожалуйста, повторите попытку позже. - Проверка Твиттер аккаунта неудалась. Пожалуйста, повторите попытку позже Теперь Вы являетесь участником программмы наград! diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 10bf3ac3..25f0a1bc 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -434,16 +434,7 @@ Nisam zainteresovan Ručna Verifikacija za Nagrade Verifikacija Nagrada - Verifikacija Društvenih Mreža - Preskoči Redosled - Preskoči za %1$s$ Vaš nalog mora proći proveru pre nego što budete odobreni za nagradni program. Ovaj proces može trajati od nekoliko minuta do nekoliko dana. - Možete se odmah verifikovati čime stičete pravo učestovanja u Nagradnom programu putem vašeg Twitter naloga i time preskočiti red manualne verifikacije. - Twitter Verifikacija - Verifikujte se odmah putem vašeg Twitter naloga. Vaša Twitter email adresa mora biti ista kao email adresa koju ste prethodno naveli, i vaš nalog bi potom trebao biti aktivan. - Verifikujte se putem Twitter-a - Preskoči Redosled - Preskočite red za manuelnu verifikaciju plaćanjem provizije i time odmah steknite pravo za učestvovanje u Nagradnom programu. Molimo vas da zatražite manuelnu verifikaciju na <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Obrada manuelnog zahteva može trajati od nekoliko minuta do nekoliko dana. Uživajte u besplatnim sadržajima u međjuvremenu! Potvrdite Broj Telefona @@ -455,9 +446,6 @@ Korisnički nalog ne može biti učitan u ovom trenutku. Molimo pokušajte kasnije. Vaš zahtev za kupovinu je i dalje u obradi. Molimo vas pošaljite email na support@lbry.com. Vaš zahtev za kupovinu trenutno ne može biti obradjen. Molimo vas pošaljite email na support@lbry.com. - Vaš Twitter nalog trenutno nije podoban: %1$s - Vaš nalog nije odobren za Nagradni program. Molimo pokušajte kasnije. - Twitter verifikacija neuspešna. Molimo pokušajte kasnije. Sada ste podobni da učestvujete u Nagradnom programu! diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 6b05bb87..ba6812dc 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -445,16 +445,7 @@ Не зацікавлений Ручна Верифікація Винагород Підтвердження винагород - Підтвердження за допомогою соціальних мереж - Пропустити Чергу - Попустити за $%1$s Цей акаунт має пройти перевірку перед прийняттям участі у програмі винагород. Це може зайняти від декількох хвилин до декількох днів. - Ви можете бути підтверджені миттєво для участі у програмі винагород за допомогою акаунту Twitter або пропустіть чергу ручного підтвердження. - Підтвердження за допомогою Twitter - Отримайте миттєве підтвердження, використавши акаунт Twitter. Ваша пошта Twitter має збігатися з поштою, яку Ви надали, а ваш акаунт має бути активним. - Підтвердіть за допомогою Twitter - Пропустити Чергу - Пропустіть ручну верифікацію сплативши внесок для миттєвого початку участі у програмі винагород. Будь ласка, зробіть запит верифікації у <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Ручне підтвердження може зайняти скільки-завгодно від декількох хвилин до декількох днів. А поки що насолоджуйтесь безкоштовним контентом! Підтвердіть номер телефону @@ -466,9 +457,6 @@ Акаунт не може бути відновлений зараз. Будь ласка, спробуйте ще раз пізніше. Ваша запит на придбання оброблюється. Будь ласка, пишіть на support@lbry.com. Ваш запит придбання не може бути оброблений зараз. Будь ласка, пишіть на support@lbry.com. - Ваш акаунт Twitter недоступний зараз: %1$s - Ваш акаунт не був підтверджений для участі у програмі винагород. Будь ласка, спробуйте ще раз пізніше. - Верифікація у Twitter не вдалася. Будь ласка, спробуйте ще раз пізніше. Тепер Ви можете прийняти участь у програмі нагород! diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index cd9801b3..91de7fcf 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -414,16 +414,7 @@ Không quan tâm Xác nhận phần thưởng thủ công Xác minh phần thưởng - Xác minh mạng xã hội - Bỏ qua - Bỏ qua cho $%1$s Tài khoản này phải trải qua quá trình xem xét trước khi bạn có thể tham gia chương trình phần thưởng. Điều này có thể mất bất cứ nơi nào từ vài phút đến vài ngày. - Bạn có thể được xác minh ngay lập tức để có thể tham gia vào chương trình phần thưởng bằng tài khoản Twitter của mình hoặc bỏ qua hàng đợi xác minh thủ công. - Xác minh Twitter - Được xác minh ngay lập tức bằng tài khoản Twitter của bạn. Địa chỉ email Twitter của bạn phải khớp với email mà bạn đã cung cấp và tài khoản của bạn phải hoạt động. - Xác minh với Twitter - Bỏ qua - Bỏ qua hàng đợi xác minh thủ công bằng cách trả phí để bắt đầu tham gia chương trình phần thưởng ngay lập tức. Vui lòng yêu cầu được xác minh trên <a href=\"https://discordapp.com/invite/Z3bERWA\">LBRY Discord server</a>. Quá trình xem xét thủ công có thể mất từ ​​vài phút đến vài ngày. Hãy tận hưởng nội dung miễn phí trong khi chờ đợi! Xác nhận số điện thoại @@ -435,9 +426,6 @@ Tài khoản người dùng không thể được lấy tại thời điểm này. Vui lòng thử lại sau. Yêu cầu mua hàng của bạn vẫn đang được xử lý. Vui lòng gửi email tới support@lbry.com. Không thể hoàn thành yêu cầu mua hàng của bạn vào lúc này. Vui lòng gửi email tới support@lbry.com. - Tài khoản Twitter của bạn không đủ điều kiện tại thời điểm này:%1$s - Tài khoản của bạn không được chấp thuận cho chương trình phần thưởng. Vui lòng thử lại sau. - Xác minh Twitter không thành công. Vui lòng thử lại sau. Bây giờ bạn đủ điều kiện để tham gia vào chương trình phần thưởng! diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 4c27b86a..3f6fc547 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -374,12 +374,7 @@ 不感興趣 手動認證獎賞 認證獎賞 - 社交網路認證 - 跳過等待 這帳號必須通過手動批核才能參與獎賞計劃。\n這可能需時數分鐘至數天不等。 - Twitter 認證 - 使用 Twitter 認證 - 跳過等待 在等候的同時請享受免費的內容! 使用手機號碼認證 請輸入發送到 %1$s 的認證碼 @@ -387,9 +382,6 @@ 認證 請輸入有效的手機號碼。 請輸入發送到你手機號碼的認證碼。 - 你的 Twitter 帳號目前不符合資格:%1$s - 你的帳號未能通過獎賞認證。請稍後再試。 - Twitter 認證失敗。請稍後再試。 你現在已有資格參與獎賞計劃! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92016e96..7124541d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -423,16 +423,7 @@ Not interested Manual Reward Verification Reward Verification - Social Media Verification - Skip the Queue - Skip for $%1$s This account must undergo review before you can participate in the rewards program. This can take anywhere from several minutes to several days. - You can get instantly verified to be able to participate in the rewards program using your Twitter account or skipping the manual verification queue. - Twitter Verification - Get instantly verified using your Twitter account. Your Twitter email address must match the email that you provided and your account should be active. - Verify with Twitter - Skip the Queue - Skip the manual verification queue by paying a fee in order to start participating in the rewards program immediately. Please request to be verified on the <a href="https://discordapp.com/invite/Z3bERWA">LBRY Discord server</a>. A manual review can take anywhere from several minutes to several days. Please enjoy free content in the meantime! Verify Phone Number @@ -444,9 +435,6 @@ User account could not be retrieved at this time. Please try again later. Your purchase request is still being processed. Please send an email to support@lbry.com. Your purchase request could not be completed at this time. Please send an email to support@lbry.com. - Your Twitter account is not eligible at this time: %1$s - Your account was not approved for the rewards program. Please try again later. - Twitter verification failed. Please try again later. You are now eligible to participate in the rewards program!