Skip to content
This repository was archived by the owner on Jul 22, 2021. It is now read-only.

Commit 78ff247

Browse files
Create separate flavours for GooglePlay & F-Droid
Signed-off-by: sunilpaulmathew <[email protected]>
1 parent 2414e35 commit 78ff247

File tree

14 files changed

+165
-90
lines changed

14 files changed

+165
-90
lines changed

app/build.gradle

+12-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ android {
3434
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
3535
}
3636
}
37+
38+
flavorDimensions "release"
39+
productFlavors {
40+
play {
41+
dimension "release"
42+
}
43+
fdroid {
44+
dimension "release"
45+
}
46+
}
47+
3748
lintOptions {
3849
abortOnError false
3950
}
@@ -48,7 +59,7 @@ repositories {
4859
}
4960

5061
dependencies {
51-
implementation 'com.android.billingclient:billing:3.0.2'
62+
playImplementation 'com.android.billingclient:billing:3.0.2'
5263
implementation "com.github.topjohnwu.libsu:core:3.0.2"
5364
implementation 'com.google.android.material:material:1.3.0-beta01'
5465
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright (C) 2020-2021 sunilpaulmathew <[email protected]>
3+
*
4+
* This file is part of Script Manager, an app to create, import, edit
5+
* and easily execute any properly formatted shell scripts.
6+
*
7+
*/
8+
9+
package com.smartpack.scriptmanager.utils;
10+
11+
import android.app.Activity;
12+
13+
/*
14+
* Created by sunilpaulmathew <[email protected]> on January 17, 2021
15+
*/
16+
17+
public class Billing {
18+
19+
public static void showDonateOption(Activity activity) {
20+
Utils.launchUrl("https://smartpack.github.io/donation/", activity);
21+
}
22+
23+
}

app/src/main/AndroidManifest.xml

+6-6
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@
2626
</intent-filter>
2727
</activity>
2828

29-
<activity android:name=".utils.AboutActivity" />
30-
<activity android:name=".utils.ApplyScriptActivity" />
31-
<activity android:name=".utils.BillingActivity" />
32-
<activity android:name=".utils.CreateScriptActivity" />
33-
<activity android:name=".utils.FilePickerActivity" />
34-
<activity android:name=".utils.LicenceActivity" />
29+
<activity android:name=".activities.AboutActivity" />
30+
<activity android:name=".activities.ApplyScriptActivity" />
31+
<activity android:name=".activities.BillingActivity" />
32+
<activity android:name=".activities.CreateScriptActivity" />
33+
<activity android:name=".activities.FilePickerActivity" />
34+
<activity android:name=".activities.LicenceActivity" />
3535

3636
<provider
3737
android:name="androidx.core.content.FileProvider"

app/src/main/java/com/smartpack/scriptmanager/MainActivity.java

+7-75
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,14 @@
1717
import android.os.Environment;
1818
import android.os.Handler;
1919
import android.provider.OpenableColumns;
20-
import android.view.Menu;
2120

2221
import androidx.appcompat.app.AppCompatActivity;
2322
import androidx.appcompat.widget.AppCompatImageButton;
24-
import androidx.appcompat.widget.PopupMenu;
2523
import androidx.core.app.ActivityCompat;
26-
import androidx.recyclerview.widget.GridLayoutManager;
2724

2825
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
29-
import com.google.android.material.floatingactionbutton.FloatingActionButton;
30-
import com.smartpack.scriptmanager.utils.AboutActivity;
31-
import com.smartpack.scriptmanager.utils.BillingActivity;
32-
import com.smartpack.scriptmanager.utils.FilePickerActivity;
33-
import com.smartpack.scriptmanager.utils.RecycleViewAdapter;
26+
import com.smartpack.scriptmanager.activities.AboutActivity;
27+
import com.smartpack.scriptmanager.utils.Billing;
3428
import com.smartpack.scriptmanager.utils.Scripts;
3529
import com.smartpack.scriptmanager.utils.Utils;
3630

@@ -40,11 +34,9 @@
4034
/*
4135
* Created by sunilpaulmathew <[email protected]> on January 12, 2020
4236
*/
43-
4437
public class MainActivity extends AppCompatActivity {
4538

4639
private boolean mExit;
47-
private FloatingActionButton mFab;
4840
private Handler mHandler = new Handler();
4941
private String mPath;
5042

@@ -59,90 +51,30 @@ protected void onCreate(Bundle savedInstanceState) {
5951

6052
Scripts.mRecyclerView = findViewById(R.id.recycler_view);
6153
Utils.mSettings = findViewById(R.id.settings_icon);
62-
mFab = findViewById(R.id.fab);
54+
Utils.mFab = findViewById(R.id.fab);
6355
AppCompatImageButton mDonate = findViewById(R.id.donate_icon);
6456
AppCompatImageButton mInfo = findViewById(R.id.info_icon);
6557

6658
Utils.mSettings.setOnClickListener(v -> Utils.settingsMenu(this));
6759

68-
mFab.setOnClickListener(v -> {
60+
Utils.mFab.setOnClickListener(v -> {
6961
if (!Utils.checkWriteStoragePermission(this)) {
7062
ActivityCompat.requestPermissions(this, new String[]{
7163
Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
7264
Utils.snackbar(findViewById(android.R.id.content), getString(R.string.permission_denied_write_storage));
7365
return;
7466
}
75-
showOptions();
67+
Utils.fabMenu(this);
7668
});
7769

78-
mDonate.setOnClickListener(v -> {
79-
Intent donations = new Intent(this, BillingActivity.class);
80-
startActivity(donations);
81-
});
70+
mDonate.setOnClickListener(v -> Billing.showDonateOption(this));
8271

8372
mInfo.setOnClickListener(v -> {
8473
Intent aboutView = new Intent(this, AboutActivity.class);
8574
startActivity(aboutView);
8675
});
8776

88-
Scripts.mRecyclerView.setLayoutManager(new GridLayoutManager(this, Utils.getSpanCount(this)));
89-
try {
90-
Scripts.mRecycleViewAdapter = new RecycleViewAdapter(Scripts.getData());
91-
} catch (RuntimeException ignored) {}
92-
if (Utils.checkWriteStoragePermission(this)) {
93-
Scripts.mRecyclerView.setAdapter(Scripts.mRecycleViewAdapter);
94-
} else {
95-
ActivityCompat.requestPermissions(this, new String[]{
96-
Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
97-
Utils.snackbar(findViewById(android.R.id.content), getString(R.string.permission_denied_write_storage));
98-
}
99-
}
100-
101-
private void showOptions() {
102-
PopupMenu popupMenu = new PopupMenu(this, mFab);
103-
Menu menu = popupMenu.getMenu();
104-
menu.add(Menu.NONE, 0, Menu.NONE, getString(R.string.create));
105-
menu.add(Menu.NONE, 1, Menu.NONE, getString(R.string.import_item));
106-
popupMenu.setOnMenuItemClickListener(item -> {
107-
switch (item.getItemId()) {
108-
case 0:
109-
Utils.dialogEditText(null,
110-
(dialogInterface, i) -> {
111-
}, text -> {
112-
if (text.isEmpty()) {
113-
Utils.snackbar(findViewById(android.R.id.content), getString(R.string.name_empty));
114-
return;
115-
}
116-
if (!text.endsWith(".sh")) {
117-
text += ".sh";
118-
}
119-
if (text.contains(" ")) {
120-
text = text.replace(" ", "_");
121-
}
122-
if (Utils.existFile(Scripts.scriptExistsCheck(text))) {
123-
Utils.snackbar(findViewById(android.R.id.content), getString(R.string.script_exists, text));
124-
return;
125-
}
126-
Scripts.mScriptName = text;
127-
Scripts.mScriptPath = null;
128-
Scripts.createScript(this);
129-
}, this).setOnDismissListener(dialogInterface -> {
130-
}).show();
131-
break;
132-
case 1:
133-
if (Utils.getBoolean("use_file_picker", true, this)) {
134-
Intent filePicker = new Intent(this, FilePickerActivity.class);
135-
startActivity(filePicker);
136-
} else {
137-
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
138-
intent.setType("*/*");
139-
startActivityForResult(intent, 0);
140-
}
141-
break;
142-
}
143-
return false;
144-
});
145-
popupMenu.show();
77+
Scripts.loadUI(this);
14678
}
14779

14880
@Override

app/src/main/java/com/smartpack/scriptmanager/activities/AboutActivity.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*/
88

9-
package com.smartpack.scriptmanager.utils;
9+
package com.smartpack.scriptmanager.activities;
1010

1111
import android.annotation.SuppressLint;
1212
import android.os.Bundle;
@@ -18,6 +18,7 @@
1818
import com.google.android.material.textview.MaterialTextView;
1919
import com.smartpack.scriptmanager.BuildConfig;
2020
import com.smartpack.scriptmanager.R;
21+
import com.smartpack.scriptmanager.utils.Utils;
2122

2223
import org.json.JSONException;
2324
import org.json.JSONObject;

app/src/main/java/com/smartpack/scriptmanager/activities/ApplyScriptActivity.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*/
88

9-
package com.smartpack.scriptmanager.utils;
9+
package com.smartpack.scriptmanager.activities;
1010

1111
import android.os.Bundle;
1212
import android.view.View;
@@ -19,6 +19,8 @@
1919
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
2020
import com.google.android.material.textview.MaterialTextView;
2121
import com.smartpack.scriptmanager.R;
22+
import com.smartpack.scriptmanager.utils.Scripts;
23+
import com.smartpack.scriptmanager.utils.Utils;
2224

2325
import java.util.ConcurrentModificationException;
2426

app/src/main/java/com/smartpack/scriptmanager/activities/CreateScriptActivity.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*/
88

9-
package com.smartpack.scriptmanager.utils;
9+
package com.smartpack.scriptmanager.activities;
1010

1111
import android.annotation.SuppressLint;
1212
import android.content.pm.ActivityInfo;
@@ -23,6 +23,8 @@
2323
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
2424
import com.google.android.material.textview.MaterialTextView;
2525
import com.smartpack.scriptmanager.R;
26+
import com.smartpack.scriptmanager.utils.Scripts;
27+
import com.smartpack.scriptmanager.utils.Utils;
2628

2729
import java.util.ConcurrentModificationException;
2830
import java.util.Objects;

app/src/main/java/com/smartpack/scriptmanager/activities/FilePickerActivity.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*/
88

9-
package com.smartpack.scriptmanager.utils;
9+
package com.smartpack.scriptmanager.activities;
1010

1111
import android.annotation.SuppressLint;
1212
import android.app.Activity;
@@ -32,6 +32,8 @@
3232
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
3333
import com.google.android.material.textview.MaterialTextView;
3434
import com.smartpack.scriptmanager.R;
35+
import com.smartpack.scriptmanager.utils.Scripts;
36+
import com.smartpack.scriptmanager.utils.Utils;
3537

3638
import java.io.File;
3739
import java.text.DateFormat;

app/src/main/java/com/smartpack/scriptmanager/activities/LicenceActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*/
88

9-
package com.smartpack.scriptmanager.utils;
9+
package com.smartpack.scriptmanager.activities;
1010

1111
import android.os.Bundle;
1212
import android.view.LayoutInflater;

app/src/main/java/com/smartpack/scriptmanager/adapters/RecycleViewAdapter.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*/
88

9-
package com.smartpack.scriptmanager.utils;
9+
package com.smartpack.scriptmanager.adapters;
1010

1111
import android.view.LayoutInflater;
1212
import android.view.Menu;
@@ -22,6 +22,8 @@
2222
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
2323
import com.google.android.material.textview.MaterialTextView;
2424
import com.smartpack.scriptmanager.R;
25+
import com.smartpack.scriptmanager.utils.Scripts;
26+
import com.smartpack.scriptmanager.utils.Utils;
2527

2628
import java.util.List;
2729

app/src/main/java/com/smartpack/scriptmanager/utils/Scripts.java

+21
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,25 @@
88

99
package com.smartpack.scriptmanager.utils;
1010

11+
import android.Manifest;
1112
import android.annotation.SuppressLint;
13+
import android.app.Activity;
1214
import android.content.Context;
1315
import android.content.Intent;
1416
import android.net.Uri;
1517
import android.os.AsyncTask;
1618
import android.os.Handler;
1719

20+
import androidx.core.app.ActivityCompat;
1821
import androidx.core.content.FileProvider;
22+
import androidx.recyclerview.widget.GridLayoutManager;
1923
import androidx.recyclerview.widget.RecyclerView;
2024

2125
import com.smartpack.scriptmanager.BuildConfig;
2226
import com.smartpack.scriptmanager.R;
27+
import com.smartpack.scriptmanager.activities.ApplyScriptActivity;
28+
import com.smartpack.scriptmanager.activities.CreateScriptActivity;
29+
import com.smartpack.scriptmanager.adapters.RecycleViewAdapter;
2330

2431
import java.io.File;
2532
import java.util.ArrayList;
@@ -194,6 +201,20 @@ public static boolean scriptOnLateBoot(String name) {
194201
return Utils.existFile(MAGISK_SERVICED + "/" + name + ".sh");
195202
}
196203

204+
public static void loadUI(Activity activity) {
205+
Scripts.mRecyclerView.setLayoutManager(new GridLayoutManager(activity, Utils.getSpanCount(activity)));
206+
try {
207+
Scripts.mRecycleViewAdapter = new RecycleViewAdapter(Scripts.getData());
208+
} catch (RuntimeException ignored) {}
209+
if (Utils.checkWriteStoragePermission(activity)) {
210+
Scripts.mRecyclerView.setAdapter(Scripts.mRecycleViewAdapter);
211+
} else {
212+
ActivityCompat.requestPermissions(activity, new String[]{
213+
Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
214+
Utils.snackbar(activity.findViewById(android.R.id.content), activity.getString(R.string.permission_denied_write_storage));
215+
}
216+
}
217+
197218
public static void reloadUI() {
198219
if (mLoader == null) {
199220
mHandler.postDelayed(new Runnable() {

0 commit comments

Comments
 (0)