Skip to content

Commit

Permalink
redis-implemented-and-bug-fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
ARYPROGRAMMER committed Oct 7, 2024
1 parent 88171ca commit ab08862
Show file tree
Hide file tree
Showing 20 changed files with 218 additions and 96 deletions.
13 changes: 7 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,15 @@ jobs:
uses: ncipollo/release-action@v1
with:
artifacts: "build/app/outputs/apk/release/*"
tag: v2.0.8
tag: v2.0.9
token: ${{ secrets.TOKEN }}
name: "stable-v2.0.8"
name: "beta-v2.0.9"
body: |
## What's New in v2.0.8
## What's New in v2.0.9
- **Structure of Redis added to Clean Architecture
- **Added Redis-base to support syncfusion**
- **Fixed Performance and Responsiveness Issues and Improved UI.
- **New Feature**: Implemented Syncfusion.
- **Fixed Performance and Responsiveness Issues by Improvised BLoC Structure.
- **New Feature**: Implemented Syncfusion and Redis for low latency.
### Known Issues are Resolved.
### Known Issues are Resolved - Looking for vulnerabilities before Redis Full-Integration.
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
![Mindful-App](https://socialify.git.ci/ARYPROGRAMMER/Mindful-App/image?description=1&descriptionEditable=Mindful%20is%20a%20mental%20wellness%20app%20designed%20to%20support%20users%20in%20managing%20stress%20and%20anxiety&font=Source%20Code%20Pro&language=1&name=1&owner=1&pattern=Diagonal%20Stripes&stargazers=1&theme=Dark)

[![Build Status](https://github.com/travisjeffery/timecop/workflows/CI/badge.svg)](https://github.com/ARYPROGRAMMER/Mindful-App/actions)
![version](https://img.shields.io/badge/version-2.0.8-red)
![version](https://img.shields.io/badge/version-2.0.9-red)

<p align="center">
<img src="https://img.shields.io/badge/firebase-ffca28?style=for-the-badge&logo=firebase&logoColor=black"/>
Expand All @@ -12,13 +12,14 @@

**APP STATUS** : ALL CORE FUNCTIONALITIES WORKING (Deployed NodeJs & Postgresql on Render)

## What's New in v2.0.8
## What's New in v2.0.9

- **Structure of Redis added to Clean Architecture
- **Added Redis-base to support syncfusion**
- **Fixed Performance and Responsiveness Issues and Improved UI.
- **New Feature**: Implemented Syncfusion.
- **Fixed Performance and Responsiveness Issues by Improvised BLoC Structure.
- **New Feature**: Implemented Syncfusion and Redis for low latency.
### Known Issues are Resolved.
### Known Issues are Resolved - Looking for vulnerabilities before Redis Full-Integration.

[DEMO LINK OF WORKING](https://vimeo.com/1016496824?share=copy)

Expand Down
7 changes: 7 additions & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ android {
}

signingConfigs{
debug{
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
release{
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
Expand All @@ -60,6 +66,7 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so flutter run --release works.
signingConfig signingConfigs.debug
signingConfig signingConfigs.release
}
}
Expand Down
33 changes: 33 additions & 0 deletions lib/features/meditation/data/model/mood_data_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import 'dart:convert';

import 'package:mental_health/features/meditation/domain/entities/mood_data.dart';

class MoodDataModel extends MoodData {
MoodDataModel({
required String happy,
required String neutral,
required String sad,
required String calm,
required String relax,
required String focus,
}) : super(
happy: happy,
neutral: neutral,
sad: sad,
calm: calm,
relax: relax,
focus: focus
);

factory MoodDataModel.fromJson(json) {
final data = jsonDecode(json);
return MoodDataModel(
happy: data['happy'],
sad: data['sad'],
neutral: data['neutral'],
calm: data['calm'],
relax: data['relax'],
focus: data['focus'],
);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:mental_health/features/meditation/data/sources/meditation_remote_source.dart';
import 'package:mental_health/features/meditation/domain/entities/dailyQuotes.dart';
import 'package:mental_health/features/meditation/domain/entities/mood_msg.dart';
import 'package:mental_health/features/meditation/domain/entities/mood_data.dart';
import 'package:mental_health/features/meditation/domain/repositories/meditation_repo.dart';

class MeditationRepoImpl implements MeditationRepository {
Expand All @@ -17,4 +18,8 @@ class MeditationRepoImpl implements MeditationRepository {
Future<MoodMessage> getMoodMessage(String mood) async {
return await remoteDataSource.getMoodMessage(mood);
}
@override
Future<MoodData> getmoodData(String username) async {
return await remoteDataSource.getmoodData(username);
}
}
37 changes: 20 additions & 17 deletions lib/features/meditation/data/sources/meditation_remote_source.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import 'dart:convert';

import 'package:http/http.dart' as http;
import 'package:mental_health/features/meditation/data/model/daily_quote_model.dart';
import 'package:mental_health/features/meditation/data/model/mood_msg_model.dart';
import 'package:mental_health/features/meditation/data/model/mood_data_model.dart';

abstract class MeditaionRemoteDataSource {
Future<DailyQuoteModel> getDailyQuote();
Future<MoodMessageModel> getMoodMessage(String mood);
Future<MoodDataModel> getmoodData(String username);
}

class MeditationRemoteDataSourceImpl implements MeditaionRemoteDataSource {
Expand All @@ -16,18 +17,11 @@ class MeditationRemoteDataSourceImpl implements MeditaionRemoteDataSource {
@override
Future<DailyQuoteModel> getDailyQuote() async {
final response = await client
// .get(Uri.parse('http://10.0.3.218:6000/meditation/dailyQuotes'));
.get(Uri.parse(
'https://mindful-app-47s6.onrender.com/meditation/dailyQuotes'));
// await client.get(Uri.parse('http://192.168.29.6:6000/songs/all')); for android real device
// await client.get(Uri.parse('http;//10.0.2.2:6000/songs/all')); for avd

if (response.statusCode == 200) {
final jsonResponse = json.decode(response.body);
// List finalRes = [];
//
// for (int i = 0; i < jsonResponse.length; i++) {
// finalRes.add(jsonResponse[i]['id']);
// }

return DailyQuoteModel.fromJson(jsonResponse);
} else {
Expand All @@ -38,22 +32,31 @@ class MeditationRemoteDataSourceImpl implements MeditaionRemoteDataSource {
@override
Future<MoodMessageModel> getMoodMessage(String mood) async {
final response = await client
// .get(Uri.parse('http://10.0.3.218:6000/meditation/myMood/$mood'));
.get(Uri.parse(
'https://mindful-app-47s6.onrender.com/meditation/myMood/$mood'));
// await client.get(Uri.parse('http://192.168.29.6:6000/songs/all')); for android real device
// await client.get(Uri.parse('http;//10.0.2.2:6000/songs/all')); for avd
if (response.statusCode == 200) {
final jsonResponse = json.decode(response.body);
// List finalRes = [];
//
// for (int i = 0; i < jsonResponse.length; i++) {
// finalRes.add(jsonResponse[i]['id']);
// }

return MoodMessageModel.fromJson(jsonResponse);
} else {
throw Exception('Failed to load mood quotes');
}
}

@override
Future<MoodDataModel> getmoodData(String username)async{
final response = await client.get(Uri.parse(
'http://192.168.29.6:6000/user/$username'
));

if (response.statusCode==200){
final jsonResponse = json.decode(response.body);
return MoodDataModel.fromJson(jsonResponse);

}
else {
throw Exception("Failed to get data");

}
}
}
12 changes: 12 additions & 0 deletions lib/features/meditation/domain/entities/mood_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class MoodData {
final String happy;
final String neutral;
final String sad;
final String calm;
final String relax;
final String focus;

MoodData({required this.happy, required this.neutral, required this.sad, required this.calm, required this.relax, required this.focus});


}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import 'package:mental_health/features/meditation/domain/entities/dailyQuotes.dart';
import 'package:mental_health/features/meditation/domain/entities/mood_data.dart';
import 'package:mental_health/features/meditation/domain/entities/mood_msg.dart';

abstract class MeditationRepository {
Future<DailyQuote> getDailyQuote();
Future<MoodMessage> getMoodMessage(String mood);
Future<MoodData> getmoodData(String username);
}
12 changes: 12 additions & 0 deletions lib/features/meditation/domain/usecase/get_mood_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:mental_health/features/meditation/domain/entities/mood_data.dart';
import 'package:mental_health/features/meditation/domain/repositories/meditation_repo.dart';

class GetMoodData {
final MeditationRepository repository;

GetMoodData({required this.repository});

Future<MoodData> call(String username) async {
return await repository.getmoodData(username);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:mental_health/features/meditation/domain/usecase/get_mood_data.dart';
import 'package:mental_health/features/meditation/presentation/bloc/mood_data/mood_data_event.dart';
import 'package:mental_health/features/meditation/presentation/bloc/mood_data/mood_data_state.dart';

class MoodDataBloc extends Bloc<MoodDataEvent, MoodDataState> {
final GetMoodData getmoodData;

MoodDataBloc({required this.getmoodData})
: super(MoodDataInitial()) {
on<FetchMoodData>((event, emit) async {
emit(MoodDataLoading());
try {
final moodDatainfo = await getmoodData(event.username);
emit(MoodDataLoaded(moodDatainfo: moodDatainfo));
} catch (e) {
emit(MoodDataError(message: e.toString()));
}
});

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
abstract class MoodDataEvent {}

class FetchMoodData extends MoodDataEvent {
final String username;

FetchMoodData(this.username);
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:mental_health/features/meditation/domain/entities/mood_data.dart';

abstract class MoodDataState {}

class MoodDataInitial extends MoodDataState {}

class MoodDataLoading extends MoodDataState {}

class MoodDataLoaded extends MoodDataState {
final MoodData moodDatainfo;

MoodDataLoaded({required this.moodDatainfo});
}

class MoodDataError extends MoodDataState {
final String message;

MoodDataError({required this.message});
}
3 changes: 0 additions & 3 deletions lib/features/music/data/sources/song_datasource.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,8 @@ class SongRemoteDataSourceImpl implements SongRemoteDataSource {
@override
Future<List<Song>> getAllSongs() async {
final response =
// await client.get(Uri.parse('http://10.0.3.218:6000/songs/all'));
await client
.get(Uri.parse('https://mindful-app-47s6.onrender.com/songs/all'));
// await client.get(Uri.parse('http://192.168.29.6:6000/songs/all')); for android real device
// await client.get(Uri.parse('http;//10.0.2.2:6000/songs/all')); for avd
if (response.statusCode == 200) {
List jsonResponse = json.decode(response.body);
List finalRes = [];
Expand Down
7 changes: 7 additions & 0 deletions lib/injections.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:mental_health/features/meditation/data/repositories/meditaion_re
import 'package:mental_health/features/meditation/data/sources/meditation_remote_source.dart';
import 'package:mental_health/features/meditation/domain/repositories/meditation_repo.dart';
import 'package:mental_health/features/meditation/domain/usecase/get_daily_quote.dart';
import 'package:mental_health/features/meditation/domain/usecase/get_mood_data.dart';
import 'package:mental_health/features/meditation/domain/usecase/get_mood_msg.dart';
import 'package:mental_health/features/meditation/presentation/bloc/dailyQuote/daily_quote_bloc.dart';
import 'package:mental_health/features/meditation/presentation/bloc/mood_message/mood_message_bloc.dart';
Expand All @@ -16,6 +17,10 @@ import 'package:mental_health/features/music/data/sources/song_datasource.dart';
import 'package:mental_health/features/music/domain/repositories/song_repo.dart';
import 'package:mental_health/features/music/domain/usecase/get_all_song.dart';
import 'package:mental_health/features/music/presentation/bloc/song_bloc.dart';
import 'package:mental_health/features/meditation/presentation/bloc/mood_data/mood_data_bloc.dart';
import 'package:mental_health/features/meditation/presentation/bloc/mood_data/mood_data_event.dart';
import 'package:mental_health/features/meditation/presentation/bloc/mood_data/mood_data_state.dart';

import 'package:http/http.dart' as http;

final sl = GetIt.instance;
Expand All @@ -25,11 +30,13 @@ Future<void> init() async {
sl.registerFactory(() => DailyQuoteBloc(getDailyQuote: sl()));
sl.registerFactory(() => MoodMessageBloc(getMoodMessage: sl()));
sl.registerFactory(() => SongBloc(getAllSongs: sl()));
sl.registerFactory(() => MoodDataBloc(getmoodData: sl()));

//usecase
sl.registerLazySingleton(() => GetDailyQuote(repository: sl()));
sl.registerLazySingleton(() => GetMoodMessage(repository: sl()));
sl.registerLazySingleton(() => GetAllSongs(repository: sl()));
sl.registerLazySingleton(() => GetMoodData(repository: sl()));

//repos
sl.registerLazySingleton<MeditationRepository>(
Expand Down
Loading

0 comments on commit ab08862

Please sign in to comment.