Skip to content

Commit

Permalink
Merge pull request #238 from Hash-Studios/v2.6.9-beta
Browse files Browse the repository at this point in the history
V2.6.9 beta
  • Loading branch information
codenameakshay authored Aug 9, 2021
2 parents 955477d + 949016c commit 9948e58
Show file tree
Hide file tree
Showing 24 changed files with 762 additions and 396 deletions.
4 changes: 2 additions & 2 deletions android/app/src/main/java/com/hash/Prism/MyTileService.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ public void onTileAdded() {
super.onTileAdded();
Tile qsTile = getQsTile();
String permission = Manifest.permission.READ_EXTERNAL_STORAGE;
if (ContextCompat.checkSelfPermission(context, permission)
if (ContextCompat.checkSelfPermission(this, permission)
== PackageManager.PERMISSION_DENIED) {
Toast.makeText(context,
Toast.makeText(this,
"Storage permission denied!",
Toast.LENGTH_SHORT)
.show();
Expand Down
29 changes: 17 additions & 12 deletions lib/auth/google_auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import 'package:hive/hive.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:Prism/ui/pages/home/wallpapers/homeScreen.dart' as home;
import 'package:Prism/global/globals.dart' as globals;
import 'package:Prism/main.dart' as main;

const String USER_OLD_COLLECTION = 'users';
const String USER_NEW_COLLECTION = 'usersv2';
Expand Down Expand Up @@ -63,7 +64,7 @@ class GoogleAuth {
'lastLoginAt': DateTime.now().toUtc().toIso8601String(),
'loggedIn': true,
});
logger.d("USERDATA CASE1 ${globals.prismUser.toJson()}");
logger.d("USERDATA CASE1");
}
// User exists in old database. Copy/create him in the new db.
else if (usersData[0] != null && usersData[1] == null) {
Expand All @@ -73,7 +74,7 @@ class GoogleAuth {
.collection(USER_NEW_COLLECTION)
.doc(globals.prismUser.id)
.set(globals.prismUser.toJson());
logger.d("USERDATA CASE2 ${globals.prismUser.toJson()}");
logger.d("USERDATA CASE2");
}
// User exists in new database. Simply sign him in.
else if (usersData[0] == null && usersData[1] != null) {
Expand All @@ -86,7 +87,7 @@ class GoogleAuth {
'lastLoginAt': DateTime.now().toUtc().toIso8601String(),
'loggedIn': true,
});
logger.d("USERDATA CASE3 ${globals.prismUser.toJson()}");
logger.d("USERDATA CASE3");
}
// User exists in none. Create new data in new db and sign him in.
else {
Expand Down Expand Up @@ -114,10 +115,10 @@ class GoogleAuth {
.collection(USER_NEW_COLLECTION)
.doc(globals.prismUser.id)
.set(globals.prismUser.toJson());
logger.d("USERDATA CASE4 ${globals.prismUser.toJson()}");
logger.d("USERDATA CASE4");
}

await prefs.put('prismUserV2', globals.prismUser);
await prefs.put(main.userHiveKey, globals.prismUser);
isLoading = false;
}
home.f.subscribeToTopic(user.email!.split("@")[0]);
Expand All @@ -132,12 +133,6 @@ class GoogleAuth {

Future<bool> signOutGoogle() async {
await googleSignIn.signOut();
FirebaseFirestore.instance
.collection(USER_NEW_COLLECTION)
.doc(globals.prismUser.id)
.update({
'loggedIn': false,
});
globals.prismUser = PrismUsersV2(
name: "",
bio: "",
Expand All @@ -159,9 +154,19 @@ class GoogleAuth {
coverPhoto: "",
);
Hive.openBox('prefs').then((value) {
value.put('prismUserV2', globals.prismUser);
value.put(main.userHiveKey, globals.prismUser);
});
await Purchases.reset();
try {
FirebaseFirestore.instance
.collection(USER_NEW_COLLECTION)
.doc(globals.prismUser.id)
.update({
'loggedIn': false,
});
} catch (e, st) {
logger.e(e, e, st);
}
logger.d("User Sign Out");
return true;
}
Expand Down
58 changes: 51 additions & 7 deletions lib/data/upload/wallpaper/wallfirestore.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Future<void> createRecord(
toasts.codeSend("Please try to upload less than 5 walls a day.");
}
await firestore.collection("walls").add({
'by': globals.prismUser.username,
'by': globals.prismUser.name,
'email': globals.prismUser.email,
'userPhoto': globals.prismUser.profilePhoto,
'id': id,
Expand Down Expand Up @@ -130,7 +130,7 @@ Future<void> createSetup(
String wallId,
bool? review) async {
await firestore.collection("setups").add({
'by': globals.prismUser.username,
'by': globals.prismUser.name,
'email': globals.prismUser.email,
'userPhoto': globals.prismUser.profilePhoto,
'id': id,
Expand Down Expand Up @@ -224,8 +224,52 @@ Future<void> updateSetup(
String setupDesc,
String wallId,
bool? review) async {
await firestore.collection("setups").doc(setupDocId).update({
'by': globals.prismUser.username,
await firestore.collection("setups").doc(setupDocId).set(
{
'by': globals.prismUser.name,
'email': globals.prismUser.email,
'userPhoto': globals.prismUser.profilePhoto,
'id': id,
'image': imageURL,
'wallpaper_provider': wallpaperProvider,
'wallpaper_thumb': wallpaperThumb,
'wallpaper_url': wallpaperUrl,
'icon': iconName,
'icon_url': iconURL,
'widget': widgetName,
'widget_url': widgetURL,
'widget2': widgetName2,
'widget_url2': widgetURL2,
'name': setupName,
'desc': setupDesc,
'review': review,
'created_at': DateTime.now().toUtc(),
'wall_id': wallId
},
SetOptions(
merge: true,
));
toasts.codeSend("Your setup is edited, and is under review.");
}

Future<void> createDraftSetup(
String? id,
String? imageURL,
String? wallpaperProvider,
String? wallpaperThumb,
dynamic wallpaperUrl,
String? iconName,
String? iconURL,
String? widgetName,
String? widgetURL,
String? widgetName2,
String? widgetURL2,
String? setupName,
String? setupDesc,
String? wallId,
) async {
await firestore.collection("draftSetups").doc(id).set({
'by': globals.prismUser.name,
'email': globals.prismUser.email,
'userPhoto': globals.prismUser.profilePhoto,
'id': id,
Expand All @@ -241,9 +285,9 @@ Future<void> updateSetup(
'widget_url2': widgetURL2,
'name': setupName,
'desc': setupDesc,
'review': review,
'review': false,
'created_at': DateTime.now().toUtc(),
'wall_id': wallId
'wall_id': wallId,
});
toasts.codeSend("Your setup is edited, and is under review.");
toasts.codeSend("Draft saved!");
}
4 changes: 2 additions & 2 deletions lib/global/globals.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:Prism/main.dart' as main;

GoogleAuth gAuth = GoogleAuth();
PrismUsersV2 prismUser = main.prefs.get(
'prismUserV2',
main.userHiveKey,
defaultValue: PrismUsersV2(
name: "",
bio: "",
Expand All @@ -29,7 +29,7 @@ PrismUsersV2 prismUser = main.prefs.get(
) as PrismUsersV2;
String currentAppVersion = '2.6.8';
String obsoleteAppVersion = '2.6.0';
String currentAppVersionCode = '70';
String currentAppVersionCode = '71';
bool updateChecked = false;
bool updateAvailable = false;
Map versionInfo = {};
Expand Down
69 changes: 57 additions & 12 deletions lib/logger/logger.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import 'dart:developer' as developer;
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter_archive/flutter_archive.dart';
import 'package:file_encrypter/file_encrypter.dart';
import 'package:logger/logger.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';

final printer = LogOutputPrinter();
final logger = Logger(
Expand All @@ -25,14 +27,26 @@ class LogOutputPrinter extends PrettyPrinter {
RandomAccessFile? _logFile;

LogOutputPrinter() {
getApplicationDocumentsDirectory().then((cacheDir) async {
_logFolderPath = join(cacheDir.path, "logs");
try {
await Directory(_logFolderPath).create();
} catch (e) {
// Ignore if it already exists
getExternalStorageDirectory().then((cacheDir) async {
if (cacheDir == null) {
getApplicationDocumentsDirectory().then((cDir) async {
_logFolderPath = join(cDir.path, "logs");
try {
await Directory(_logFolderPath).create();
} catch (e) {
// Ignore if it already exists
}
await setLogCapture(true);
});
} else {
_logFolderPath = join(cacheDir.path, "logs");
try {
await Directory(_logFolderPath).create();
} catch (e) {
// Ignore if it already exists
}
await setLogCapture(true);
}
await setLogCapture(true);
});
}

Expand All @@ -49,10 +63,20 @@ class LogOutputPrinter extends PrettyPrinter {
Future.delayed(const Duration(seconds: 1))
.then((value) => _logFile!.writeStringSync('$str\n'));
final timeStr = getTime().substring(0, 12);
if (prefix == "[E]") {
print(color!('$timeStr $prefix - $logMsg \n$logStrace'));
if (logStrace != null) {
// print(color!('$timeStr $prefix - $logMsg \n$logStrace'));
developer.log(
color!('$logMsg \n$logStrace'),
name: "$timeStr :: ${prefix!.replaceAll("[", "").replaceAll("]", "")}",
stackTrace: logStrace,
level: 2000,
);
} else {
print(color!('$timeStr $prefix - $logMsg'));
// print(color!('$timeStr $prefix - $logMsg'));
developer.log(
color!('$logMsg'),
name: "$timeStr :: ${prefix!.replaceAll("[", "").replaceAll("]", "")}",
);
}
return [];
}
Expand Down Expand Up @@ -132,5 +156,26 @@ Future<String> zipLogs() async {
} catch (e, strace) {
logger.e(e, e, strace);
}
return zipFile.path;
final String encryptedString = await encryptLogsZip(zipFile.path);
return encryptedString;
}

Future<String> encryptLogsZip(String zipPath) async {
final List<String> pathList = zipPath.split('/');
pathList.removeLast();
final String outFilename = "${pathList.join("/")}/logs_zip.dat";
logger.v("Encryption Started");
String secretKey = await FileEncrypter.encrypt(
inFilename: zipPath,
outFileName: outFilename,
);
logger.v("Encryption Done");
logger.d(outFilename);
// logger.d(secretKey);
// logger.v("Renaming File");
// final String secretOutFilename = "${pathList.join("/")}/$secretKey";
// final File zipOut = File(outFilename);
// await zipOut.rename(secretOutFilename);
// logger.v("Renaming Done");
return "$secretKey::::$outFilename";
}
16 changes: 8 additions & 8 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import 'package:provider/provider.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';

String userHiveKey = "prismUserV2-1";
late Box prefs;
Directory? dir;
String? currentThemeID;
Expand Down Expand Up @@ -68,16 +69,15 @@ void main() {
getApplicationDocumentsDirectory().then(
(dir) async {
Hive.init(dir.path);
await Hive.openBox('setups');
await Hive.openBox('localFav');
// await Hive.deleteFromDisk();
Hive.ignoreTypeId(33);
// await Hive.deleteBoxFromDisk('prefs');
Hive.ignoreTypeId<PrismUsers>(33);
Hive.registerAdapter<InAppNotif>(InAppNotifAdapter());
await Hive.openBox<InAppNotif>('inAppNotifs');
// Hive.registerAdapter<PrismUsers>(PrismUsersAdapter());
Hive.registerAdapter<PrismUsersV2>(PrismUsersV2Adapter());
Hive.registerAdapter<Badge>(BadgeAdapter());
Hive.registerAdapter<PrismTransaction>(PrismTransactionAdapter());
Hive.registerAdapter<Badge>(BadgeAdapter());
await Hive.openBox<InAppNotif>('inAppNotifs');
await Hive.openBox('setups');
await Hive.openBox('localFav');
prefs = await Hive.openBox('prefs');
logger.d("Box Opened");
if (prefs.get("systemOverlayColor") == null) {
Expand Down Expand Up @@ -210,7 +210,7 @@ class _MyAppState extends State<MyApp> {
}
if (value) checkPremium();
globals.prismUser.loggedIn = value;
prefs.put("prismUserV2", globals.prismUser);
prefs.put(userHiveKey, globals.prismUser);
return value;
});
return false;
Expand Down
8 changes: 4 additions & 4 deletions lib/payments/upgrade.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Future<void> checkPremium() async {
}

globals.prismUser.premium = appData.isPro!;
main.prefs.put("prismUserV2", globals.prismUser);
main.prefs.put(main.userHiveKey, globals.prismUser);
logger.d('#### is user pro? ${appData.isPro}');
}

Expand Down Expand Up @@ -393,8 +393,8 @@ class _UpsellScreenState extends State<UpsellScreen> {
if (appData.isPro!) {
globals.prismUser.premium =
appData.isPro!;
main.prefs.put(
"prismUserV2", globals.prismUser);
main.prefs.put(main.userHiveKey,
globals.prismUser);
toasts.codeSend(
"You are now a premium member.");
main.RestartWidget.restartApp(
Expand Down Expand Up @@ -526,7 +526,7 @@ class _PurchaseButtonState extends State<PurchaseButton> {
appData.isPro =
_purchaserInfo!.entitlements.all["prism_premium"]!.isActive;
globals.prismUser.premium = appData.isPro!;
main.prefs.put("prismUserV2", globals.prismUser);
main.prefs.put(main.userHiveKey, globals.prismUser);
logger.d('is user pro? ${appData.isPro}');

if (appData.isPro!) {
Expand Down
8 changes: 8 additions & 0 deletions lib/routes/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import 'package:Prism/ui/pages/setup/shareSetupViewScreen.dart';
import 'package:Prism/ui/pages/share/shareWallViewScreen.dart';
import 'package:Prism/ui/pages/undefinedScreen.dart';
import 'package:Prism/ui/pages/home/core/notificationScreen.dart';
import 'package:Prism/ui/pages/upload/draftSetupScreen.dart';
import 'package:Prism/ui/pages/upload/editWallScreen.dart';
import 'package:Prism/ui/pages/upload/setupGuidelines.dart';
import 'package:Prism/ui/pages/upload/uploadSetupScreen.dart';
Expand Down Expand Up @@ -271,6 +272,13 @@ Route<dynamic> generateRoute(RouteSettings settings) {
builder: (context) =>
EditSetupReviewScreen(arguments: settings.arguments as List?),
fullscreenDialog: true);
case draftSetupRoute:
navStack.add("Draft Setup");
logger.d(navStack.toString());
analytics.setCurrentScreen(screenName: draftSetupRoute);
return CupertinoPageRoute(
builder: (context) => const DraftSetupScreen(),
fullscreenDialog: true);
case setupGuidelinesRoute:
navStack.add("Setup Guidelines");
logger.d(navStack.toString());
Expand Down
1 change: 1 addition & 0 deletions lib/routes/routing_constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,4 @@ const String followersRoute = '/followers';
const String reviewRoute = '/review';
const String editSetupDetailsRoute = '/editSetupDetails';
const String editProfileRoute = '/editProfile';
const String draftSetupRoute = '/draftSetup';
Loading

0 comments on commit 9948e58

Please sign in to comment.