diff --git a/lib/Utils/Common/CustomTextFormField.dart b/lib/Utils/Common/CustomTextFormField.dart index 5744920..119f621 100644 --- a/lib/Utils/Common/CustomTextFormField.dart +++ b/lib/Utils/Common/CustomTextFormField.dart @@ -94,6 +94,7 @@ class _CustomTextFormFieldState extends State { obscureText: obscureText, controller: widget.textEditingController, decoration: InputDecoration( + hintStyle: TextStyle(color: Colors.white), hintText: widget.hintText, prefixIconColor: widget.prefixIconColor, // ignore: prefer_null_aware_operators diff --git a/lib/Utils/api_urls.dart b/lib/Utils/api_urls.dart index c4f6719..a253d02 100644 --- a/lib/Utils/api_urls.dart +++ b/lib/Utils/api_urls.dart @@ -49,6 +49,8 @@ class ApiUrls { "${base}getContentByteCategories"; static String getContentBytesApi = "${base}getContentBytes"; static String morevideoApi = "${base}get-content-bytes-of-videos"; + static String getPreviousReadApi = "${base}get-previous-reads-of-user"; + static String storeReadCountApi = "${base}store-content-byte-read-click"; //Profile static String Getprofile = "${base}getuserDetails"; diff --git a/lib/controller/contact_us_controller.dart b/lib/controller/contact_us_controller.dart index ed7377e..a530f58 100644 --- a/lib/controller/contact_us_controller.dart +++ b/lib/controller/contact_us_controller.dart @@ -4,6 +4,7 @@ import 'package:get/get.dart'; import 'package:traderscircuit/model/ContactUsModel/contact_us_cat_model.dart'; import 'package:traderscircuit/model/ContactUsModel/contact_us_model.dart'; +import 'package:timeago/timeago.dart' as timeago; import '../model/ContactUsModel/ticket_details_model.dart'; import 'package:intl/intl.dart'; @@ -35,4 +36,15 @@ class ContactUsController extends GetxController { return DateFormat("dd MMM yyyy, hh:mm a").format(dateTime.toLocal()); } + + String timeAgoConverter(String originalDateTimeString) { + DateTime dateTime = DateTime.parse(originalDateTimeString); + + // Get the difference in days + DateTime now = DateTime.now(); + int differenceInDays = now.difference(dateTime).inDays; + + // Convert to "2 days ago" format + return timeago.format(now.subtract(Duration(days: differenceInDays))); + } } diff --git a/lib/controller/content_bytes_controller.dart b/lib/controller/content_bytes_controller.dart index 0b94ad5..bfb083f 100644 --- a/lib/controller/content_bytes_controller.dart +++ b/lib/controller/content_bytes_controller.dart @@ -1,9 +1,12 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:just_audio/just_audio.dart'; import 'package:traderscircuit/model/ContentBytesModel/content_bytes_categories_model.dart'; import 'package:traderscircuit/model/ContentBytesModel/content_bytes_model.dart'; +import '../model/ContentBytesModel/previous_read_user_model.dart'; import '../view/Sidemenu/ContentByte/ContentBytes.dart'; class ContentBytesController extends GetxController { @@ -11,12 +14,15 @@ class ContentBytesController extends GetxController { ContentBytesCategoriesModel contentBytesCategoriesModel = ContentBytesCategoriesModel(); ContentBytesModel contentBytesModel = ContentBytesModel(); + + PreviousReadOfUserModel previousReadOfUserModel = PreviousReadOfUserModel(); int filterId = 0; RxBool isApiCalling = true.obs; RxBool isAudioSeekBarVisible = false.obs; RxInt indexForAudios = 0.obs; RxBool titlePlaying = false.obs; RxList? titlePlayingList = [].obs; + bool isAudioInitialize = false; final progressNotifier = ValueNotifier( ProgressBarState( @@ -27,22 +33,21 @@ class ContentBytesController extends GetxController { ); final buttonNotifier = ValueNotifier(ButtonState.paused); - late AudioPlayer _audioPlayer; + late AudioPlayer audioPlayer; @override void dispose() { - _audioPlayer.stop(); + audioPlayer.stop(); super.dispose(); } - void getAudio() => _audioPlayer; - void init(index) async { - _audioPlayer = AudioPlayer(); + audioPlayer = AudioPlayer(); + isAudioInitialize = true; + indexForAudios.value = index; try { - await _audioPlayer.setUrl( - //contentBytesModel.data!.audio![index].file ?? - 'https://ghantalele.com/uploads/files/data-78/38825/Besharam%20Rang_192(Ghantalele.com).mp3'); - // await _audioPlayer.setAsset(url); + log(index.toString()); + await audioPlayer.setUrl(contentBytesModel.data!.audio![index].link!); + // await audioPlayer.setAsset(url); } on PlayerException catch (e) { print("Error code: ${e.code}"); // iOS/macOS: maps to NSError.localizedDescription @@ -52,7 +57,7 @@ class ContentBytesController extends GetxController { print("Error message: ${e.message}"); } //Catching errors during playback (e.g. lost network connection) - _audioPlayer.playbackEventStream.listen((event) {}, + audioPlayer.playbackEventStream.listen((event) {}, onError: (Object e, StackTrace st) { if (e is PlayerException) { print('Error code: ${e.code}'); @@ -62,7 +67,7 @@ class ContentBytesController extends GetxController { } }); - _audioPlayer.playerStateStream.listen((playerState) { + audioPlayer.playerStateStream.listen((playerState) { final isPlaying = playerState.playing; final processingState = playerState.processingState; if (!isPlaying) { @@ -72,12 +77,12 @@ class ContentBytesController extends GetxController { } else { _playNextTrack(); - // _audioPlayer.seek(Duration.zero); - // _audioPlayer.pause(); + // audioPlayer.seek(Duration.zero); + // audioPlayer.pause(); } }); - _audioPlayer.positionStream.listen((position) { + audioPlayer.positionStream.listen((position) { final oldState = progressNotifier.value; progressNotifier.value = ProgressBarState( current: position, @@ -86,7 +91,7 @@ class ContentBytesController extends GetxController { ); }); - _audioPlayer.bufferedPositionStream.listen((bufferedPosition) { + audioPlayer.bufferedPositionStream.listen((bufferedPosition) { final oldState = progressNotifier.value; progressNotifier.value = ProgressBarState( current: oldState.current, @@ -95,7 +100,7 @@ class ContentBytesController extends GetxController { ); }); - _audioPlayer.durationStream.listen((totalDuration) { + audioPlayer.durationStream.listen((totalDuration) { final oldState = progressNotifier.value; progressNotifier.value = ProgressBarState( current: oldState.current, @@ -118,8 +123,8 @@ class ContentBytesController extends GetxController { init(nextIndex); play(nextIndex); } else { - _audioPlayer.seek(Duration.zero); - _audioPlayer.pause(); + audioPlayer.seek(Duration.zero); + audioPlayer.pause(); } } @@ -138,26 +143,26 @@ class ContentBytesController extends GetxController { } void play(index) { - _audioPlayer.play(); + audioPlayer.play(); isAudioSeekBarVisible.value = false; isAudioSeekBarVisible.value = true; indexForAudios.value = index; } void pause() { - _audioPlayer.pause(); + audioPlayer.pause(); } void seek(Duration position) { - _audioPlayer.seek(position); + audioPlayer.seek(position); } void stop() { - _audioPlayer.stop(); + audioPlayer.stop(); } bool isPlaying() { - return _audioPlayer.playing; + return audioPlayer.playing; } addTitles() { diff --git a/lib/model/ContentBytesModel/content_bytes_model.dart b/lib/model/ContentBytesModel/content_bytes_model.dart index 22a9d20..b830c8a 100644 --- a/lib/model/ContentBytesModel/content_bytes_model.dart +++ b/lib/model/ContentBytesModel/content_bytes_model.dart @@ -29,8 +29,16 @@ class Data { List