Skip to content

Commit

Permalink
Merge pull request #6 from EnesKaraosman/refactor/cleanup-after-mr
Browse files Browse the repository at this point in the history
Refactor: cleanup after PR #5 

- jiffy package replaced with timeago package
- dart_extensions package removed
- dart 3 keywords used
  • Loading branch information
EnesKaraosman authored Jun 29, 2023
2 parents 4d97804 + a290b81 commit 4fb7afa
Show file tree
Hide file tree
Showing 27 changed files with 312 additions and 415 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
## 1.6.0

* refactor: replace timeago package with jiffy
* feat: upgrade to dart 3 syntax
* chore: improve internal dart code based on best practices
* fix: resolve several lint issues

## 1.5.0

* Feat: integrate timeago package to present message dates

## 1.4.1

* Update swifty_chat_data package and dart version
Expand Down
1 change: 0 additions & 1 deletion example/lib/basic_chat.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ class _BasicChatState extends State<BasicChat> {
}

Chat _chatWidget(BuildContext context) => Chat(
locale: LocaleType.tr,
theme: const DarkChatTheme(),
messages: _messages,
chatMessageInputField: MessageInputField(
Expand Down
4 changes: 2 additions & 2 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ class _MyAppState extends State<MyApp> {
}
}

class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
final class Home extends StatelessWidget {
const Home({super.key});

@override
Widget build(BuildContext context) {
Expand Down
36 changes: 10 additions & 26 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
dart_extensions:
dependency: transitive
description:
name: dart_extensions
sha256: b2312b71ba1836eb619efe6fc9c8dc14d8fc9cc83fc812afa37ae4ccb349b3a9
url: "https://pub.dev"
source: hosted
version: "2.2.2"
equatable:
dependency: transitive
description:
Expand Down Expand Up @@ -199,6 +191,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.18.1"
jiffy:
dependency: transitive
description:
name: jiffy
sha256: cc1d4b75016a9156c29b5d61f0c9176c3e0fb0580cc5a0e0422b5d2cab3fbfff
url: "https://pub.dev"
source: hosted
version: "6.2.1"
js:
dependency: transitive
description:
Expand Down Expand Up @@ -327,14 +327,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.2.4"
quiver:
dependency: transitive
description:
name: quiver
sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
url: "https://pub.dev"
source: hosted
version: "3.2.1"
sky_engine:
dependency: transitive
description: flutter
Expand Down Expand Up @@ -386,7 +378,7 @@ packages:
path: ".."
relative: true
source: path
version: "1.5.0"
version: "1.6.0"
swifty_chat_data:
dependency: transitive
description:
Expand All @@ -401,7 +393,7 @@ packages:
path: "../packages/swifty_chat_mocked_data"
relative: true
source: path
version: "0.1.0"
version: "0.1.1"
sync_http:
dependency: transitive
description:
Expand All @@ -426,14 +418,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.1"
timeago:
dependency: transitive
description:
name: timeago
sha256: a415b9a05ef64b845c859a91161fc9f689f88eaaa4c04759517d201891b99e90
url: "https://pub.dev"
source: hosted
version: "3.4.0"
typed_data:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
sdk: ">=2.17.3 <3.0.0"
sdk: ">=3.0.1 <4.0.0"

dependencies:
cupertino_icons: ^1.0.5
Expand Down
98 changes: 53 additions & 45 deletions lib/src/chat-message-list-items/carousel_widget.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import 'package:carousel_slider/carousel_slider.dart';
import 'package:dart_extensions/dart_extensions.dart' hide Message;
import 'package:flutter/material.dart';
import 'package:styled_widget/styled_widget.dart';
import 'package:swifty_chat/src/chat.dart';
import 'package:swifty_chat/src/extensions/theme_context.dart';
import 'package:swifty_chat/src/protocols/has_avatar.dart';
import 'package:swifty_chat_data/swifty_chat_data.dart';

class CarouselWidget extends StatelessWidget with HasAvatar {
final Message chatMessage;

final class CarouselWidget extends StatelessWidget with HasAvatar {
const CarouselWidget(this.chatMessage);

final Message chatMessage;

List<CarouselItem> get items => message.messageKind.carouselItems;

@override
Expand All @@ -20,57 +19,66 @@ class CarouselWidget extends StatelessWidget with HasAvatar {
@override
Widget build(BuildContext context) => CarouselSlider.builder(
itemCount: items.length,
itemBuilder: (context, index, _) =>
_carouselItem(context, items[index]),
itemBuilder: (_, index, __) => _CarouselItem(item: items[index]),
options: CarouselOptions(
height: _carouselItemHeight(context),
disableCenter: true,
enableInfiniteScroll: false,
),
);

Widget _carouselItem(BuildContext context, CarouselItem item) => Container(
decoration: context.theme.carouselBoxDecoration,
margin: const EdgeInsets.symmetric(horizontal: 8),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (item.imageProvider != null)
Flexible(
child: Image(
image: item.imageProvider!,
),
),
Text(
item.title,
style: context.theme.carouselTitleTextStyle,
).padding(all: context.theme.textMessagePadding),
Text(
item.subtitle,
style: context.theme.carouselSubtitleTextStyle,
textAlign: TextAlign.center,
).padding(all: context.theme.textMessagePadding),
Wrap(
children: item.buttons
.map(
(button) => ElevatedButton(
onPressed: () => ChatStateContainer.of(context)
.onCarouselButtonItemPressed
?.call(button),
style: context.theme.carouselButtonStyle,
child: Text(button.title),
),
)
.toList(),
).padding(all: 8),
],
),
);

double _carouselItemHeight(BuildContext context) {
final screenHeight = MediaQuery.sizeOf(context).height;
final height = ChatStateContainer.of(context)
.messageCellSizeConfigurator
.carouselCellMaxHeightConfiguration(context.mq.size.height);
.carouselCellMaxHeightConfiguration(screenHeight);
return height;
}
}

final class _CarouselItem extends StatelessWidget {
const _CarouselItem({required this.item});

final CarouselItem item;

@override
Widget build(BuildContext context) {
return Container(
decoration: context.theme.carouselBoxDecoration,
margin: const EdgeInsets.symmetric(horizontal: 8),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (item.imageProvider != null)
Flexible(
child: Image(
image: item.imageProvider!,
),
),
Text(
item.title,
style: context.theme.carouselTitleTextStyle,
).padding(all: context.theme.textMessagePadding),
Text(
item.subtitle,
style: context.theme.carouselSubtitleTextStyle,
textAlign: TextAlign.center,
).padding(all: context.theme.textMessagePadding),
Wrap(
children: item.buttons
.map(
(button) => ElevatedButton(
onPressed: () => ChatStateContainer.of(context)
.onCarouselButtonItemPressed
?.call(button),
style: context.theme.carouselButtonStyle,
child: Text(button.title),
),
)
.toList(),
).padding(all: 8),
],
),
);
}
}
25 changes: 7 additions & 18 deletions lib/src/chat-message-list-items/html_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,20 @@ import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:styled_widget/styled_widget.dart';
import 'package:swifty_chat/src/chat.dart';
import 'package:swifty_chat/src/extensions/date_extensions.dart';
import 'package:swifty_chat/src/extensions/theme_context.dart';
import 'package:swifty_chat/src/extensions/timeago_message_context.dart';
import 'package:swifty_chat/src/protocols/has_avatar.dart';
import 'package:swifty_chat/src/protocols/timeago_settings.dart';
import 'package:swifty_chat_data/swifty_chat_data.dart';
import 'package:url_launcher/url_launcher.dart';

class HTMLWidget extends StatelessWidget with HasAvatar {
final Message chatMessage;
final LocaleType? locale;
final class HTMLWidget extends StatelessWidget with HasAvatar {
const HTMLWidget(this.chatMessage);

const HTMLWidget(this.chatMessage, this.locale);
final Message chatMessage;

@override
Widget build(BuildContext context) {
final theme = context.theme;
final lookupMessage = context.lookupMessages;
final time = timeSettings(message.date, locale, lookupMessage);
final functions =
ChatStateContainer.of(context).onHtmlWidgetPressed?.call();
final OnTap? onLinkTap = functions?["onLinkTap"];
Expand Down Expand Up @@ -72,10 +68,10 @@ class HTMLWidget extends StatelessWidget with HasAvatar {
).padding(all: context.theme.textMessagePadding),
),
Positioned(
right: 10,
bottom: 2,
right: 12,
bottom: 6,
child: Text(
time,
chatMessage.date.relativeTimeFromNow(),
style: theme.htmlWidgetTextTime,
),
),
Expand All @@ -86,13 +82,6 @@ class HTMLWidget extends StatelessWidget with HasAvatar {
);
}

Style styleFrom({
required Color color,
String? fontFamily,
}) {
return Style(color: color, fontFamily: fontFamily);
}

@override
Message get message => chatMessage;
}
25 changes: 10 additions & 15 deletions lib/src/chat-message-list-items/image_widget.dart
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
import 'package:dart_extensions/dart_extensions.dart' hide Message;
import 'package:flutter/material.dart';
import 'package:swifty_chat/src/chat.dart';
import 'package:swifty_chat/src/extensions/date_extensions.dart';
import 'package:swifty_chat/src/extensions/theme_context.dart';
import 'package:swifty_chat/src/extensions/timeago_message_context.dart';
import 'package:swifty_chat/src/protocols/has_avatar.dart';
import 'package:swifty_chat/src/protocols/incoming_outgoing_message_widgets.dart';
import 'package:swifty_chat/src/protocols/timeago_settings.dart';
import 'package:swifty_chat_data/swifty_chat_data.dart';

class ImageMessageWidget extends StatelessWidget
final class ImageMessageWidget extends StatelessWidget
with HasAvatar, IncomingOutgoingMessageWidgets {
final Message _chatMessage;
final LocaleType? locale;
const ImageMessageWidget(this._chatMessage);

const ImageMessageWidget(this._chatMessage, this.locale);
final Message _chatMessage;

@override
Widget incomingMessageWidget(BuildContext context) => Row(
Expand All @@ -36,23 +33,20 @@ class ImageMessageWidget extends StatelessWidget

Widget imageContainer(BuildContext context) {
final theme = context.theme;
final lookupMessage = context.lookupMessages;

final time = timeSettings(message.date, locale, lookupMessage);

return ClipRRect(
borderRadius: context.theme.imageBorderRadius,
borderRadius: theme.imageBorderRadius,
child: Stack(
children: [
Image(
width: _imageWidth(context),
image: message.messageKind.imageProvider!,
),
Positioned(
right: 10,
bottom: 2,
right: 12,
bottom: 6,
child: Text(
time,
message.date.relativeTimeFromNow(),
style: theme.imageWidgetTextTime,
),
),
Expand All @@ -67,9 +61,10 @@ class ImageMessageWidget extends StatelessWidget
: incomingMessageWidget(context);

double _imageWidth(BuildContext context) {
final screenWidth = MediaQuery.sizeOf(context).width;
return ChatStateContainer.of(context)
.messageCellSizeConfigurator
.imageCellMaxWidthConfiguration(context.mq.size.width);
.imageCellMaxWidthConfiguration(screenWidth);
}

@override
Expand Down
6 changes: 3 additions & 3 deletions lib/src/chat-message-list-items/quick_reply_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import 'package:swifty_chat/src/chat.dart';
import 'package:swifty_chat/src/extensions/theme_context.dart';
import 'package:swifty_chat_data/swifty_chat_data.dart';

class QuickReplyWidget extends StatelessWidget {
final Message chatMessage;

final class QuickReplyWidget extends StatelessWidget {
const QuickReplyWidget(this.chatMessage);

final Message chatMessage;

@override
Widget build(BuildContext context) {
return Wrap(
Expand Down
Loading

0 comments on commit 4fb7afa

Please sign in to comment.