Skip to content

Commit bb1295e

Browse files
authored
Fix orientation reset (#13)
* Add configChanges to Payment activity * Use context instead of activity * Update ui to see logs * Move some code to App class * Add PaymentTest1000 in-app item * Rename to context * Some refactoring
1 parent 5643d69 commit bb1295e

8 files changed

Lines changed: 92 additions & 60 deletions

File tree

poolakeyunitysdk-android/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id 'com.android.application'
3+
id 'kotlin-android'
34
}
45

56
android {

poolakeyunitysdk-android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
android:allowBackup="true"
66
android:icon="@mipmap/ic_launcher"
77
android:label="@string/app_name"
8+
android:name=".App"
89
android:roundIcon="@mipmap/ic_launcher_round"
910
android:supportsRtl="true"
1011
android:theme="@style/Theme.PoolakeyUnitySDK">
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.sample.android.trivialdrivesample
2+
3+
import android.app.Application
4+
import androidx.lifecycle.MutableLiveData
5+
import com.farsitel.bazaar.PoolakeyKotlinBridge.connect
6+
import com.farsitel.bazaar.PoolakeyKotlinBridge.getSkuDetails
7+
import com.farsitel.bazaar.callback.ConnectionCallback
8+
import com.farsitel.bazaar.callback.SKUDetailsCallback
9+
import ir.cafebazaar.poolakey.entity.SkuDetails
10+
11+
class App : Application() {
12+
13+
val liveData = MutableLiveData<String>()
14+
15+
override fun onCreate() {
16+
super.onCreate()
17+
18+
connect(applicationContext, null, object : ConnectionCallback {
19+
override fun onConnect() {
20+
log("onConnect")
21+
getSKUDetails()
22+
}
23+
24+
override fun onDisconnect() {
25+
log("onDisconnect")
26+
}
27+
28+
override fun onFailure(message: String, stackTrace: String) {
29+
log("onFailure $message")
30+
}
31+
})
32+
}
33+
34+
private fun getSKUDetails() {
35+
getSkuDetails(
36+
"inapp",
37+
listOf(
38+
"gas", "premium", "trial_subscription", "infinite_gas_monthly", "dynamic_price",
39+
"PaymentTest1000"
40+
),
41+
object : SKUDetailsCallback {
42+
override fun onSuccess(data: List<SkuDetails?>) {
43+
log("onSkuDetailsSuccess $data")
44+
}
45+
46+
override fun onFailure(message: String, stackTrace: String) {
47+
log("onSkuDetailsFailure $message")
48+
}
49+
})
50+
}
51+
52+
fun log(text: String) {
53+
liveData.postValue(liveData.value.orEmpty() + "\n" + text)
54+
}
55+
}
Lines changed: 15 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sample.android.trivialdrivesample;
22

33
import androidx.appcompat.app.AppCompatActivity;
4+
import androidx.lifecycle.MutableLiveData;
45

56
import android.os.Bundle;
67
import android.util.Log;
@@ -10,16 +11,8 @@
1011
import com.farsitel.bazaar.PaymentActivity;
1112
import com.farsitel.bazaar.PoolakeyBridge;
1213
import com.farsitel.bazaar.PoolakeyKotlinBridge;
13-
import com.farsitel.bazaar.callback.ConnectionCallback;
1414
import com.farsitel.bazaar.callback.ConsumeCallback;
1515
import com.farsitel.bazaar.callback.PaymentCallback;
16-
import com.farsitel.bazaar.callback.PurchasesCallback;
17-
import com.farsitel.bazaar.callback.SKUDetailsCallback;
18-
19-
import java.util.Arrays;
20-
import java.util.List;
21-
22-
import ir.cafebazaar.poolakey.entity.SkuDetails;
2316

2417
public class MainActivity extends AppCompatActivity {
2518
private TextView textView;
@@ -30,82 +23,56 @@ protected void onCreate(Bundle savedInstanceState) {
3023
setContentView(R.layout.activity_main);
3124

3225
textView = findViewById(R.id.textView);
33-
34-
PoolakeyKotlinBridge.INSTANCE.connect(getApplicationContext(), null, new ConnectionCallback() {
35-
@Override
36-
public void onConnect() {
37-
log("onConnect");
38-
getSKUDetails();
39-
}
40-
41-
@Override
42-
public void onDisconnect() {
43-
log("onDisconnect");
44-
}
45-
46-
@Override
47-
public void onFailure(String message, String stackTrace) {
48-
log("onFailure " + message);
49-
}
50-
});
51-
}
52-
53-
private void getSKUDetails() {
54-
PoolakeyKotlinBridge.INSTANCE.getSkuDetails("inapp", Arrays.asList("gas,premium,trial_subscription,infinite_gas_monthly,dynamic_price".split(",")), new SKUDetailsCallback() {
55-
@Override
56-
public void onSuccess(List<SkuDetails> data) {
57-
log("onSkuDetailsSuccess " + data.toString());
58-
}
59-
60-
@Override
61-
public void onFailure(String message, String stackTrace) {
62-
log("onSkuDetailsFailure " + message);
63-
}
64-
});
26+
MutableLiveData<String> logLiveData = getApp().getLiveData();
27+
logLiveData.observe(this, this::log);
6528
}
6629

6730
public void purchase(View view) {
6831
PoolakeyKotlinBridge.INSTANCE.startActivity(this, PaymentActivity.Command.PurchaseProduct, new PaymentCallback() {
6932
@Override
7033
public void onStart() {
71-
log("onPurchaseStart");
34+
getApp().log("onPurchaseStart");
7235
}
7336

7437
@Override
7538
public void onCancel() {
76-
log("onPurchaseCancel");
39+
getApp().log("onPurchaseCancel");
7740
}
7841

7942
@Override
8043
public void onSuccess(String orderId, String purchaseToken, String payload, String packageName, int purchaseState, long purchaseTime, String productId, String originalJson, String dataSignature) {
81-
log("onPurchaseSuccess " + orderId);
44+
getApp().log("onPurchaseSuccess " + orderId);
8245
consume(purchaseToken);
8346
}
8447

8548
@Override
8649
public void onFailure(String message, String stackTrace) {
87-
log("onPurchaseFailure " + message);
50+
getApp().log("onPurchaseFailure " + message);
8851
}
89-
}, "gas", "", "");
52+
}, "PaymentTest1000", "", "");
9053
}
9154

9255
public void consume(String purchaseToken) {
9356
PoolakeyKotlinBridge.INSTANCE.consume(purchaseToken, new ConsumeCallback() {
9457
@Override
9558
public void onSuccess() {
96-
log("onConsumeSuccess");
59+
getApp().log("onConsumeSuccess");
9760
}
9861

9962
@Override
10063
public void onFailure(String message, String stackTrace) {
101-
log("onConsumeFailure " + message);
64+
getApp().log("onConsumeFailure " + message);
10265

10366
}
10467
});
10568
}
10669

10770
void log(String message) {
10871
Log.i(PoolakeyBridge.TAG, message);
109-
textView.append(message + "\n");
72+
textView.setText(message);
73+
}
74+
75+
private App getApp() {
76+
return (App) getApplication();
11077
}
11178
}

poolakeyunitysdk-android/app/src/main/res/layout/activity_main.xml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,24 @@
1212
android:layout_height="wrap_content"
1313
android:onClick="purchase"
1414
android:text="Purchase Gas"
15-
app:layout_constraintBottom_toBottomOf="parent"
15+
android:layout_marginTop="150dp"
1616
app:layout_constraintEnd_toEndOf="parent"
1717
app:layout_constraintStart_toStartOf="parent"
1818
app:layout_constraintTop_toTopOf="parent" />
1919

20-
<TextView
21-
android:id="@+id/textView"
22-
android:layout_width="0dp"
20+
<ScrollView
21+
android:layout_width="match_parent"
2322
android:layout_height="0dp"
2423
app:layout_constraintBottom_toBottomOf="parent"
2524
app:layout_constraintLeft_toLeftOf="parent"
2625
app:layout_constraintRight_toRightOf="parent"
27-
app:layout_constraintTop_toBottomOf="@+id/button" />
26+
app:layout_constraintTop_toBottomOf="@+id/button">
27+
28+
<TextView
29+
android:id="@+id/textView"
30+
android:layout_width="match_parent"
31+
android:layout_height="wrap_content" />
32+
33+
</ScrollView>
2834

2935
</androidx.constraintlayout.widget.ConstraintLayout>

poolakeyunitysdk-android/poolakey/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
<application>
77
<activity
88
android:name="com.farsitel.bazaar.PaymentActivity"
9+
android:configChanges="screenSize|orientation|mnc|mcc|colorMode|fontWeightAdjustment
10+
|fontScale|keyboard|keyboardHidden|locale|layoutDirection|screenLayout|smallestScreenSize|navigation
11+
|touchscreen|density|uiMode"
912
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
1013
</application>
1114

poolakeyunitysdk-android/poolakey/src/main/java/com/farsitel/bazaar/PaymentActivity.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.farsitel.bazaar
22

3-
import android.app.Activity
3+
import android.content.Context
44
import android.content.Intent
55
import android.os.Bundle
66
import androidx.fragment.app.FragmentActivity
@@ -147,20 +147,20 @@ class PaymentActivity : FragmentActivity() {
147147

148148
@JvmStatic
149149
fun start(
150-
activity: Activity,
150+
context: Context,
151151
command: Command,
152152
productId: String,
153153
callback: PaymentCallback,
154154
payload: String?,
155155
dynamicPriceToken: String?
156156
) {
157157
paymentCallback = callback
158-
val intent = Intent(activity, PaymentActivity::class.java)
158+
val intent = Intent(context, PaymentActivity::class.java)
159159
intent.putExtra(KEY_PRODUCT_ID, productId)
160160
intent.putExtra(KEY_PAYLOAD, payload)
161161
intent.putExtra(KEY_DYNAMIC_PRICE_TOKEN, dynamicPriceToken)
162162
intent.putExtra(KEY_COMMAND, command.name)
163-
activity.startActivity(intent)
163+
context.startActivity(intent)
164164
}
165165
}
166166

poolakeyunitysdk-android/poolakey/src/main/java/com/farsitel/bazaar/PoolakeyKotlinBridge.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.farsitel.bazaar
22

3-
import android.app.Activity
43
import android.content.Context
54
import com.farsitel.bazaar.callback.*
65
import ir.cafebazaar.poolakey.Connection
@@ -146,7 +145,7 @@ object PoolakeyKotlinBridge {
146145
}
147146

148147
fun startActivity(
149-
activity: Activity,
148+
context: Context,
150149
command: PaymentActivity.Command,
151150
callback: PaymentCallback,
152151
productId: String,
@@ -163,7 +162,7 @@ object PoolakeyKotlinBridge {
163162
return
164163
}
165164
PaymentActivity.start(
166-
activity,
165+
context,
167166
command,
168167
productId,
169168
callback,

0 commit comments

Comments
 (0)