Skip to content

Commit

Permalink
found fix else nothing much
Browse files Browse the repository at this point in the history
FUCKING DO CLEAR DATA... COME ON!!! 3DAYS?????!!!!
  • Loading branch information
frostnova721 committed Apr 24, 2024
1 parent 9b365cf commit f0f3a81
Show file tree
Hide file tree
Showing 25 changed files with 209 additions and 107 deletions.
9 changes: 7 additions & 2 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,18 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<application
android:label="animestream"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true">
android:requestLegacyExternalStorage="true"
android:allowBackup="false">
<activity
android:name=".MainActivity"
android:exported="true"
Expand Down
Binary file modified android/app/src/main/res/drawable-v21/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/drawable/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion android/app/src/main/res/values-v31/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#ffffff</item>
<item name="android:windowSplashScreenBackground">#181818</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
Expand Down
2 changes: 1 addition & 1 deletion android/app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 16 additions & 8 deletions lib/core/anime/downloader/downloader.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,33 @@ import "package:http/http.dart";
import "package:path_provider/path_provider.dart";
import "package:permission_handler/permission_handler.dart";
import "../../commons/utils.dart";
import 'package:device_info_plus/device_info_plus.dart';

List<DownloadingItem> downloadQueue = [];

class Downloader {

//check for storage permission and request for permission if permission isnt granted
// check for storage permission and request for permission if permission isnt granted
Future<bool> checkPermission() async {

final access = await Permission.storage;
final os = await DeviceInfoPlugin().androidInfo;
final sdkVer = os.version.sdkInt;

Permission access;

if (sdkVer > 32) {
access = await Permission.videos;
} else {
access = await Permission.storage;
}

final status = await access.status;

if(status.isPermanentlyDenied) {
if (status.isPermanentlyDenied) {
return false;
}

if(status.isDenied) {
if (status.isDenied) {
final req = await access.request();
if(req.isGranted) {
if (req.isGranted) {
return true;
} else {
return false;
Expand Down Expand Up @@ -53,7 +61,7 @@ class Downloader {

Future<void> download(String streamLink, String fileName) async {
final permission = await checkPermission();
if(!permission) {
if (!permission) {
throw new Exception("ERR_NO_STORAGE_PERMISSION");
}
final downPath = await Directory('/storage/emulated/0/Download');
Expand Down
17 changes: 17 additions & 0 deletions lib/core/app/logging.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'dart:io';

class Logger {
Future<void> writeLog(String data) async {
//write the log to Documents folder
final dir = await Directory('/storage/emulated/0/Documents/animestream/logs');
if(!(await dir.exists())) {
await dir.create(recursive: true);
}
final now = DateTime.now();
final dateAndTime = "${now.day}${now.month}${now.year}_${now.hour}${now.minute}${now.second}";
final filePath = "${dir.path}/$dateAndTime.txt";
final file = File(filePath);
await file.writeAsString(data);
print("written stuff to $filePath");
}
}
3 changes: 2 additions & 1 deletion lib/core/data/preferences.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import 'package:animestream/core/data/types.dart';

class UserPreferences {
Future<UserPreferencesModal> getUserPreferences() async {
final prefMap = await getVal('userPreferences');
Map<dynamic, dynamic>? prefMap = await getVal('userPreferences');
if(prefMap == null || prefMap.isEmpty) prefMap = UserPreferencesModal().toMap();
return UserPreferencesModal.fromMap(prefMap);
}

Expand Down
2 changes: 1 addition & 1 deletion lib/core/data/types.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class UserPreferencesModal {
final bool? episodeGridView;

UserPreferencesModal({
this.episodeGridView,
this.episodeGridView
});

factory UserPreferencesModal.fromMap(Map<dynamic, dynamic> map) {
Expand Down
32 changes: 20 additions & 12 deletions lib/core/database/anilist/anilist.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,33 +28,39 @@ class Anilist {
return data;
}

getCurrentlyAiringAnime() async {
Future<List<CurrentlyAiringResult>> getCurrentlyAiringAnime() async {
final query = '''{
Page(perPage: 100) {
Page(perPage: 40) {
media(sort: [START_DATE_DESC], type: ANIME, format: TV, status: RELEASING) {
id
status
title {
romaji
english
}
startDate {
year
month
day
}
episodes
coverImage {
large
medium
color
}
}
}
}''';

final data = await fetchQuery(query, RequestType.media);
final List<dynamic> data = await fetchQuery(query, RequestType.media);

return data;
final List<CurrentlyAiringResult> airingAnimes = [];

for(final airingAnime in data) {
airingAnimes.add(CurrentlyAiringResult(
cover: airingAnime['coverImage']['large'],
id: airingAnime['id'],
status: airingAnime['status'],
title: {
'english': airingAnime['title']['english'],
'romaji': airingAnime['title']['romaji']
}));
}

return airingAnimes;
}

//maybe latest and not recentlyUpdatedAnime!
Expand All @@ -69,6 +75,7 @@ class Anilist {
english
romaji
}
status
id
type
bannerImage
Expand Down Expand Up @@ -99,6 +106,7 @@ class Anilist {
'romaji': recentlyUpdatedAnime['media']['title']['romaji']
},
id: recentlyUpdatedAnime['media']['id'],
releaseStatus: recentlyUpdatedAnime['media']['status'],
type: recentlyUpdatedAnime['media']['type'],
banner: recentlyUpdatedAnime['media']['banner'],
cover: recentlyUpdatedAnime['media']['coverImage']['large'] ?? '',
Expand Down
2 changes: 2 additions & 0 deletions lib/core/database/anilist/queries.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class AnilistQueries {
progress
media {
id
status
title {
romaji
english
Expand Down Expand Up @@ -44,6 +45,7 @@ class AnilistQueries {
'english': media['title']['english'],
'romaji': media['title']['romaji'],
},
// releaseStatus: media['status'],
coverImage: media['coverImage']['large'],
watchProgress: e['progress'],
rating: media['averageScore'] != null
Expand Down
13 changes: 13 additions & 0 deletions lib/core/database/anilist/types.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class RecentlyUpdatedResult {
final String? banner;
final String cover;
final dynamic genres;
final String releaseStatus;
final int? rating;

RecentlyUpdatedResult({
Expand All @@ -16,6 +17,7 @@ class RecentlyUpdatedResult {
required this.banner,
required this.cover,
required this.genres,
required this.releaseStatus,
this.rating = null,
});
}
Expand Down Expand Up @@ -67,13 +69,15 @@ class UserAnimeList {
class UserAnimeListItem {
final int id;
final Map<String, String?> title;
// final String releaseStatus;
final String coverImage;
final int? watchProgress;
final double? rating;

UserAnimeListItem({
required this.id,
required this.title,
// required this.releaseStatus,
required this.coverImage,
required this.watchProgress,
required this.rating,
Expand Down Expand Up @@ -140,3 +144,12 @@ class AnilistRecommendations {
}


class CurrentlyAiringResult {
final int id;
final Map<String, String?> title;
final String cover;
final String status;

CurrentlyAiringResult({required this.cover, required this.id, required this.status, required this.title});
}

18 changes: 12 additions & 6 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:io';

import 'package:animestream/core/app/logging.dart';
import 'package:animestream/core/app/runtimeDatas.dart';
import 'package:animestream/core/data/settings.dart';
import 'package:animestream/core/data/theme.dart';
Expand All @@ -13,12 +14,17 @@ import 'package:awesome_notifications/awesome_notifications.dart';
import 'package:flutter/services.dart';

void main() async {
try {
WidgetsFlutterBinding.ensureInitialized();
final Directory dir = await getApplicationDocumentsDirectory();
await Hive.initFlutter(dir.path);
await loadAndAssignSettings();
NotificationService().init();
runApp(const MyApp());
runApp(const AnimeStream());
} catch(err) {
Logger().writeLog(err.toString());
print("logged the error to logs folder");
}
}

Future<void> loadAndAssignSettings() async {
Expand All @@ -35,16 +41,16 @@ Future<void> loadAndAssignSettings() async {
.then((settings) => currentUserSettings = settings);
}

class MyApp extends StatefulWidget {
const MyApp({super.key});
class AnimeStream extends StatefulWidget {
const AnimeStream({super.key});

static final GlobalKey<NavigatorState> navigatorKey =
GlobalKey<NavigatorState>();
@override
State<MyApp> createState() => _MyAppState();
State<AnimeStream> createState() => _AnimeStreamState();
}

class _MyAppState extends State<MyApp> {
class _AnimeStreamState extends State<AnimeStream> {
@override
void initState() {
AwesomeNotifications().setListeners(
Expand All @@ -66,7 +72,7 @@ class _MyAppState extends State<MyApp> {
super.initState();
}

// This widget is the root of your application.
// This widget is the root of *my* application.
@override
Widget build(BuildContext context) {
return MaterialApp(
Expand Down
2 changes: 1 addition & 1 deletion lib/ui/models/bottomSheets/bottomSheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,6 @@ class BottomSheetContentState extends State<BottomSheetContent> {
),
).then((value) {
widget.getWatched!();
ScaffoldMessenger.of(context).setState(() {});
Navigator.of(context).pop();
});
},
Expand Down Expand Up @@ -212,6 +211,7 @@ class BottomSheetContentState extends State<BottomSheetContent> {
onPressed: () {
Downloader().download(qualities[ind]['link'],
"${widget.bottomSheetContentData.title}_Ep_${widget.bottomSheetContentData.episodeIndex + 1}").catchError((err) {
print(err);
floatingSnackBar(context, "$err");
});
Navigator.of(context).pop();
Expand Down
Loading

0 comments on commit f0f3a81

Please sign in to comment.