Skip to content

Commit

Permalink
Release v0.3.0 (#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
AngeloAvv authored Oct 25, 2023
1 parent 5624cd9 commit 408f84d
Show file tree
Hide file tree
Showing 32 changed files with 653 additions and 430 deletions.
2 changes: 1 addition & 1 deletion .fvm/fvm_config.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"flutterSdkVersion": "3.3.9",
"flutterSdkVersion": "3.13.8",
"flavors": {}
}
6 changes: 3 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
with:
channel: 'stable'
architecture: x64
flutter-version: '3.3.9'
flutter-version: '3.13.8'
- name: Install dependencies
run: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
- name: Install project dependencies
Expand Down Expand Up @@ -46,7 +46,7 @@ jobs:
with:
channel: 'stable'
architecture: x64
flutter-version: '3.3.9'
flutter-version: '3.13.8'
- name: Install project dependencies
run: flutter pub get
- name: Generate intermediates
Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
with:
channel: 'stable'
architecture: x64
flutter-version: '3.3.9'
flutter-version: '3.13.8'
- name: Install project dependencies
run: flutter pub get
- name: Generate intermediates
Expand Down
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ A tool to retrieve a genuine recovery image to recover your Mac.
[![Flutter CI](https://github.com/AngeloAvv/MacRecoveryX/actions/workflows/main.yml/badge.svg)](https://github.com/AngeloAvv/MacRecoveryX/actions/workflows/main.yml)
[![Star on GitHub](https://img.shields.io/github/stars/AngeloAvv/MacRecoveryX.svg?style=flat&logo=github&colorB=deeppink&label=stars)](https://github.com/AngeloAvv/MacRecoveryX)
[![License: GPL](https://img.shields.io/badge/license-GPL-purple.svg)](https://opensource.org/licenses/GPL-3.0)
[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/AngeloAvv)

If you want to support this project,

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/angeloavv)
If you want to support this project, please leave a star, share this project, or consider donating through [Github Sponsor](https://github.com/sponsors/AngeloAvv).

## Getting Started
Download the latest binaries under the release section according to your Operative System. MacRecoveryX is compatible with Windows, Linux and macOS.
Expand Down
Binary file modified assets/macrecovery.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 added assets/os/sonoma.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions lib/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:macrecovery_x/di/dependency_injector.dart';
import 'package:macrecovery_x/misc/custom_scroll_behavior.dart';
import 'package:macrecovery_x/router/app_router.gr.dart';
import 'package:macrecovery_x/router/app_router.dart';

class App extends StatelessWidget {
final _router = AppRouter();

App({Key? key}) : super(key: key);
App({super.key});

@override
Widget build(BuildContext context) => DependencyInjector(
child: MaterialApp.router(
title: 'Flutter Demo',
title: 'Macrecovery X',
scrollBehavior: CustomScrollBehavior(),
debugShowCheckedModeBanner: false,
routerDelegate: _router.delegate(),
Expand All @@ -27,7 +27,7 @@ class App extends StatelessWidget {
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
textStyle: Theme.of(context).textTheme.headline6,
textStyle: Theme.of(context).textTheme.titleLarge,
padding:
const EdgeInsets.symmetric(vertical: 16, horizontal: 24),
shape: RoundedRectangleBorder(
Expand All @@ -39,7 +39,7 @@ class App extends StatelessWidget {
style: OutlinedButton.styleFrom(
padding:
const EdgeInsets.symmetric(vertical: 16, horizontal: 24),
textStyle: Theme.of(context).textTheme.headline6,
textStyle: Theme.of(context).textTheme.titleLarge,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(100),
),
Expand Down
1 change: 0 additions & 1 deletion lib/cubits/download/download_cubit.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import 'package:macrecovery_x/services/recovery_service.dart';
import 'package:rxdart/rxdart.dart';

part 'download_cubit.freezed.dart';

part 'download_state.dart';

class DownloadCubit extends Cubit<DownloadState> {
Expand Down
21 changes: 4 additions & 17 deletions lib/di/blocs.dart
Original file line number Diff line number Diff line change
@@ -1,19 +1,6 @@
part of 'dependency_injector.dart';

class _Blocs extends StatelessWidget {
final Widget child;

const _Blocs({
Key? key,
required this.child,
}) : super(key: key);

@override
Widget build(BuildContext context) => MultiBlocProvider(
providers: [
BlocProvider<WizardCubit>(create: (_) => WizardCubit()),
BlocProvider<StepCubit>(create: (_) => StepCubit()),
],
child: child,
);
}
final List<BlocProvider> _blocs = [
BlocProvider<WizardCubit>(create: (_) => WizardCubit()),
BlocProvider<StepCubit>(create: (_) => StepCubit()),
];
15 changes: 9 additions & 6 deletions lib/di/dependency_injector.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import 'package:macrecovery_x/cubits/wizard/wizard_cubit.dart';
import 'package:macrecovery_x/repositories/file_explorer_repository.dart';
import 'package:macrecovery_x/repositories/recovery_repository.dart';
import 'package:macrecovery_x/services/recovery_service.dart';
import 'package:pine/di/dependency_injector_helper.dart';
import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';

part 'blocs.dart';
part 'providers.dart';
Expand All @@ -15,14 +17,15 @@ class DependencyInjector extends StatelessWidget {
final Widget child;

const DependencyInjector({
Key? key,
super.key,
required this.child,
}) : super(key: key);
});

@override
Widget build(BuildContext context) => _Providers(
child: _Repositories(
child: _Blocs(child: child),
),
Widget build(BuildContext context) => DependencyInjectorHelper(
blocs: _blocs,
providers: _providers,
repositories: _repositories,
child: child,
);
}
19 changes: 3 additions & 16 deletions lib/di/providers.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,5 @@
part of 'dependency_injector.dart';

class _Providers extends StatelessWidget {
final Widget child;

const _Providers({
Key? key,
required this.child,
}) : super(key: key);

@override
Widget build(BuildContext context) => MultiProvider(
providers: [
Provider(create: (_) => RecoveryService()),
],
child: child,
);
}
final List<SingleChildWidget> _providers = [
Provider<RecoveryService>(create: (_) => RecoveryService()),
];
33 changes: 10 additions & 23 deletions lib/di/repositories.dart
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
part of 'dependency_injector.dart';

class _Repositories extends StatelessWidget {
final Widget child;

const _Repositories({
Key? key,
required this.child,
}) : super(key: key);

@override
Widget build(BuildContext context) => MultiRepositoryProvider(
providers: [
RepositoryProvider(
create: (_) => FileExplorerRepository(),
),
RepositoryProvider(
create: (context) => RecoveryRepository(
service: context.read(),
),
),
],
child: child,
);
}
final List<RepositoryProvider> _repositories = [
RepositoryProvider<FileExplorerRepository>(
create: (_) => FileExplorerRepository(),
),
RepositoryProvider<RecoveryRepository>(
create: (context) => RecoveryRepository(
service: context.read(),
),
),
];
9 changes: 9 additions & 0 deletions lib/models/os.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class OS with _$OS {
OS.bigSur,
OS.monterey,
OS.ventura,
OS.sonoma,
];

const factory OS({
Expand Down Expand Up @@ -119,6 +120,14 @@ class OS with _$OS {
name: 'Ventura',
version: '13',
avatar: 'assets/os/ventura.jpg',
boardId: 'Mac-B4831CEBD52A0C4C',
mlb: '00000000000000000',
);

factory OS.sonoma() => const OS(
name: 'Sonoma',
version: '14',
avatar: 'assets/os/sonoma.jpg',
boardId: 'Mac-7BA5B2D9E42DDD94',
mlb: '00000000000000000',
);
Expand Down
11 changes: 6 additions & 5 deletions lib/pages/download_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,18 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:macrecovery_x/cubits/download/download_cubit.dart';
import 'package:macrecovery_x/cubits/step_cubit.dart';
import 'package:macrecovery_x/models/os.dart';
import 'package:macrecovery_x/router/app_router.gr.dart';
import 'package:macrecovery_x/router/app_router.dart';

class DownloadPage extends StatelessWidget with AutoRouteWrapper {
@RoutePage()
class DownloadPage extends StatelessWidget implements AutoRouteWrapper {
final OS os;
final Directory destination;

const DownloadPage({
required this.os,
required this.destination,
Key? key,
}) : super(key: key);
super.key,
});

@override
Widget wrappedRoute(BuildContext context) => BlocProvider(
Expand All @@ -43,7 +44,7 @@ class DownloadPage extends StatelessWidget with AutoRouteWrapper {
children: [
Text(
'${min(progress * 100, 100).toInt()} %',
style: Theme.of(context).textTheme.headline6,
style: Theme.of(context).textTheme.titleLarge,
),
SizedBox(
width: 256,
Expand Down
15 changes: 8 additions & 7 deletions lib/pages/finish_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,32 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:macrecovery_x/cubits/step_cubit.dart';
import 'package:macrecovery_x/router/app_router.gr.dart';
import 'package:macrecovery_x/router/app_router.dart';
import 'package:provider/provider.dart';

@RoutePage()
class FinishPage extends StatelessWidget {
final Directory directory;

const FinishPage(this.directory, {Key? key}) : super(key: key);
const FinishPage(this.directory, {super.key});

@override
Widget build(BuildContext context) => Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
AppLocalizations.of(context)?.label_finish_title ?? '',
style: Theme.of(context).textTheme.headline4?.copyWith(
AppLocalizations.of(context)?.label_finish_title ?? 'label_finish_title',
style: Theme.of(context).textTheme.headlineMedium?.copyWith(
color: Colors.black,
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: RichText(
text: TextSpan(
style: Theme.of(context).textTheme.headline6,
text: AppLocalizations.of(context)?.label_finish_subtitle ?? '',
style: Theme.of(context).textTheme.titleLarge,
text: AppLocalizations.of(context)?.label_finish_subtitle ?? 'label_finish_subtitle',
children: [
TextSpan(
text: directory.path,
Expand All @@ -48,7 +49,7 @@ class FinishPage extends StatelessWidget {
context.read<StepCubit>().init();
},
child:
Text(AppLocalizations.of(context)?.action_start_over ?? ''),
Text(AppLocalizations.of(context)?.action_start_over ?? 'action_start_over'),
),
),
],
Expand Down
23 changes: 14 additions & 9 deletions lib/pages/folder_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:macrecovery_x/cubits/folders/folders_cubit.dart';
import 'package:macrecovery_x/cubits/folder_cubit.dart';
import 'package:macrecovery_x/cubits/folders/folders_cubit.dart';
import 'package:macrecovery_x/cubits/step_cubit.dart';
import 'package:macrecovery_x/cubits/wizard/wizard_cubit.dart';
import 'package:macrecovery_x/extensions/directory_extensions.dart';
import 'package:macrecovery_x/router/app_router.gr.dart';
import 'package:macrecovery_x/router/app_router.dart';
import 'package:macrecovery_x/widgets/folder_item.dart';
import 'package:macrecovery_x/widgets/loading_widget.dart';

class FolderPage extends StatelessWidget with AutoRouteWrapper {
const FolderPage({Key? key}) : super(key: key);
@RoutePage()
class FolderPage extends StatelessWidget implements AutoRouteWrapper {
const FolderPage({super.key});

@override
Widget wrappedRoute(BuildContext context) => MultiBlocProvider(
Expand Down Expand Up @@ -65,10 +66,11 @@ class FolderPage extends StatelessWidget with AutoRouteWrapper {
children: [
OutlinedButton(
onPressed: () {
context.router.navigate(const OSRoute());
context.router.navigate(OSRoute());
context.read<StepCubit>().prev();
},
child: Text(AppLocalizations.of(context)?.action_prev ?? ''),
child: Text(AppLocalizations.of(context)?.action_prev ??
'action_prev'),
),
ElevatedButton(
onPressed: selectedDirectory != null
Expand All @@ -87,7 +89,7 @@ class FolderPage extends StatelessWidget with AutoRouteWrapper {
: null,
child: Text(
AppLocalizations.of(context)?.action_use_this_folder ??
''),
'action_use_this_folder'),
),
],
),
Expand All @@ -99,7 +101,7 @@ class FolderPage extends StatelessWidget with AutoRouteWrapper {
class CurrentDirectory extends StatelessWidget {
final List<Directory> directories;

const CurrentDirectory(this.directories, {Key? key}) : super(key: key);
const CurrentDirectory(this.directories, {super.key});

@override
Widget build(BuildContext context) => SizedBox(
Expand Down Expand Up @@ -138,13 +140,16 @@ class CurrentDirectory extends StatelessWidget {

class FoldersTree extends StatelessWidget {
final List<Directory> folders;
final _scrollController = ScrollController();

const FoldersTree(this.folders, {Key? key}) : super(key: key);
FoldersTree(this.folders, {super.key});

@override
Widget build(BuildContext context) => Scrollbar(
controller: _scrollController,
thumbVisibility: true,
child: SingleChildScrollView(
controller: _scrollController,
padding: const EdgeInsets.symmetric(
vertical: 16,
horizontal: 8,
Expand Down
Loading

0 comments on commit 408f84d

Please sign in to comment.