Skip to content

Commit

Permalink
style: formatting and small code tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
matthew-hagemann committed Sep 15, 2023
1 parent d0bdac5 commit dd14cbc
Show file tree
Hide file tree
Showing 11 changed files with 65 additions and 70 deletions.
4 changes: 2 additions & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import 'package:yaru_widgets/yaru_widgets.dart';

import 'appstream.dart';
import 'l10n.dart';
import 'ratings.dart';
import 'snapd.dart';
import 'src/ratings/ratings_service.dart';
import 'store.dart';

Future<void> main(List<String> args) async {
Expand All @@ -27,7 +27,7 @@ Future<void> main(List<String> args) async {
registerServiceInstance(launcher);

// TODO: Dev/prod url's, determine on .env var
final ratings = RatingsService("localhost", 8080);
final ratings = RatingsService('localhost', 8080);
registerServiceInstance(ratings);

registerService(() => GitHub());
Expand Down
4 changes: 4 additions & 0 deletions lib/ratings.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export 'src/ratings/exports.dart';
export 'src/ratings/ratings_l10n.dart';
export 'src/ratings/ratings_model.dart';
export 'src/ratings/ratings_service.dart';
32 changes: 11 additions & 21 deletions lib/src/detail/detail_page.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import 'package:app_center/src/ratings/ratings_l10n.dart';
import 'package:app_center/src/ratings/ratings_model.dart';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
Expand All @@ -15,18 +13,14 @@ import 'package:yaru_widgets/yaru_widgets.dart';

import '/l10n.dart';
import '/layout.dart';
import '/ratings.dart';
import '/snapd.dart';
import '/widgets.dart';

const _kPrimaryButtonMaxWidth = 136.0;
const _kChannelDropdownWidth = 220.0;

class SnapInfo {
final String label;
final Widget value;

SnapInfo({required this.label, required this.value});
}
typedef SnapInfo = ({String label, Widget value});

class DetailPage extends ConsumerWidget {
const DetailPage({super.key, required this.snapName});
Expand All @@ -39,7 +33,7 @@ class DetailPage extends ConsumerWidget {
final updatesModel = ref.watch(updatesModelProvider);

return snapModel.state.when(
data: (snapData) => ResponsiveLayoutBuilder(
data: (_) => ResponsiveLayoutBuilder(
builder: (_) => _SnapView(
snapModel: snapModel,
updatesModel: updatesModel,
Expand All @@ -52,10 +46,7 @@ class DetailPage extends ConsumerWidget {
}

class _SnapView extends ConsumerWidget {
const _SnapView({
required this.snapModel,
required this.updatesModel,
});
const _SnapView({required this.snapModel, required this.updatesModel});

final SnapModel snapModel;
final UpdatesModel updatesModel;
Expand All @@ -65,7 +56,7 @@ class _SnapView extends ConsumerWidget {
final l10n = AppLocalizations.of(context);

final snapInfos = <SnapInfo>[
SnapInfo(
(
label: l10n.detailPageConfinementLabel,
value: Row(
mainAxisSize: MainAxisSize.min,
Expand All @@ -83,27 +74,27 @@ class _SnapView extends ConsumerWidget {
],
),
),
SnapInfo(
(
label: l10n.detailPageDownloadSizeLabel,
value: Text(
snapModel.channelInfo != null
? context.formatByteSize(snapModel.channelInfo!.size)
: '',
),
),
SnapInfo(
(
label: l10n.detailPagePublishedLabel,
value: Text(
snapModel.channelInfo != null
? DateFormat.yMMMd().format(snapModel.channelInfo!.releasedAt)
: '',
),
),
SnapInfo(
(
label: l10n.detailPageLicenseLabel,
value: Text(snapModel.snap.license ?? ''),
),
SnapInfo(
(
label: l10n.detailPageLinksLabel,
value: Column(
children: [
Expand Down Expand Up @@ -196,9 +187,8 @@ class _SnapInfos extends ConsumerWidget {
final ratingsModel = ref.watch(ratingsModelProvider(snapId));

final ratings = ratingsModel.state.whenOrNull(
data: (_) => SnapInfo(
label:
'${ratingsModel.snapRating?.totalVotes ?? 0} ${l10n.snapRatingsVotes}',
data: (_) => (
label: l10n.snapRatingsVotes(ratingsModel.snapRating?.totalVotes ?? 0),
value: Text(
ratingsModel.snapRating?.ratingsBand.localize(l10n) ?? '',
style: TextStyle(
Expand Down
3 changes: 2 additions & 1 deletion lib/src/explore/explore_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -110,13 +110,15 @@ class _CategorySnapList extends ConsumerWidget {
// get snaps from `category`
.watch(snapSearchProvider(SnapSearchParameters(category: category)))
.whenOrNull(data: (data) => data)
// .. without the banner snaps, if we don't want them
?.where(
(snap) => hideBannerSnaps
? !(category.featuredSnapNames?.take(kNumberOfBannerSnaps) ?? [])
.contains(snap.name)
: true,
);

// pick hand-selected featured snaps
final featuredSnaps = category.featuredSnapNames
?.map((name) =>
categorySnaps?.singleWhereOrNull((snap) => snap.name == name))
Expand All @@ -126,7 +128,6 @@ class _CategorySnapList extends ConsumerWidget {
?.take(numberOfSnaps)
.toList() ??
[];

return showScreenshots
? SnapImageCardGrid(
snaps: snaps,
Expand Down
10 changes: 9 additions & 1 deletion lib/src/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,14 @@
"snapRatingsBandPoor": "Poor",
"snapRatingsBandVeryPoor": "Very Poor",
"snapRatingsBandInsufficientVotes": "Insufficient Votes",
"snapRatingsVotes": "votes"
"snapRatingsVotes": "{n} votes",
"@snapRatingsVotes": {
"placeholders": {
"n": {
"type": "int"
}
}
}


}
18 changes: 7 additions & 11 deletions lib/src/widgets/snap_card.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import 'package:app_center/l10n.dart';
import 'package:app_center/src/ratings/ratings_l10n.dart';
import 'package:app_center/src/ratings/ratings_model.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:snapd/snapd.dart';
import 'package:yaru_widgets/yaru_widgets.dart';

import '/layout.dart';
import '/ratings.dart';
import '/snapd.dart';
import '/widgets.dart';

class SnapCard extends StatelessWidget {
SnapCard({
const SnapCard({
super.key,
required this.snap,
this.onTap,
Expand Down Expand Up @@ -41,7 +40,7 @@ class SnapCard extends StatelessWidget {
}

class SnapImageCard extends StatelessWidget {
SnapImageCard({super.key, required this.snap, this.onTap});
const SnapImageCard({super.key, required this.snap, this.onTap});

final Snap snap;
final VoidCallback? onTap;
Expand Down Expand Up @@ -70,10 +69,7 @@ class SnapImageCard extends StatelessWidget {
flex: 306 - 160, // based on mockups
child: Padding(
padding: const EdgeInsets.all(kCardSpacing),
child: _SnapCardBody(
snap: snap,
maxlines: 1,
),
child: _SnapCardBody(snap: snap, maxlines: 1),
),
),
],
Expand All @@ -83,7 +79,7 @@ class SnapImageCard extends StatelessWidget {
}

class _SnapCardBody extends StatelessWidget {
_SnapCardBody({required this.snap, this.maxlines = 2});
const _SnapCardBody({required this.snap, this.maxlines = 2});

final Snap snap;
final int maxlines;
Expand Down Expand Up @@ -141,14 +137,14 @@ class _RatingsInfo extends ConsumerWidget {
if (rating?.totalVotes != null) ...[
const SizedBox(width: 2),
Text(
' | ${rating?.totalVotes} ${l10n.snapRatingsVotes}',
' | ${l10n.snapRatingsVotes(rating?.totalVotes ?? 0)}',
style: Theme.of(context).textTheme.bodySmall,
),
],
],
);
},
error: (error, stackTrace) => const Text(""),
error: (error, stackTrace) => const Text(''),
loading: () => const Center(child: YaruCircularProgressIndicator()),
);
}
Expand Down
41 changes: 20 additions & 21 deletions test/detail_page_test.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import 'package:app_center/l10n.dart';
import 'package:app_center/ratings.dart';
import 'package:app_center/snapd.dart';
import 'package:app_center/src/detail/detail_page.dart';
import 'package:app_center/src/ratings/exports.dart';
import 'package:app_center/src/ratings/ratings_l10n.dart';
import 'package:app_center/src/ratings/ratings_model.dart';
import 'package:app_center/widgets.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
Expand All @@ -16,26 +14,27 @@ import 'package:yaru_widgets/widgets.dart';

import 'test_utils.dart';

const snapId = "r4LxMVp7zWramXsJQAKdamxy6TAWlaDD";
const snapId = 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD';
const snapRating = Rating(
snapId: snapId,
totalVotes: 123,
ratingsBand: RatingsBand.good,
);

final localSnap = Snap(
name: 'testsnap',
title: 'Testsnap',
publisher: const SnapPublisher(displayName: 'testPublisher'),
version: '2.0.0',
website: 'https://example.com',
confinement: SnapConfinement.classic,
license: 'MIT',
description: 'this is the **description**',
trackingChannel: 'latest/edge',
channel: 'latest/edge',
installDate: DateTime(1970),
id: "r4LxMVp7zWramXsJQAKdamxy6TAWlaDD");
name: 'testsnap',
title: 'Testsnap',
publisher: const SnapPublisher(displayName: 'testPublisher'),
version: '2.0.0',
website: 'https://example.com',
confinement: SnapConfinement.classic,
license: 'MIT',
description: 'this is the **description**',
trackingChannel: 'latest/edge',
channel: 'latest/edge',
installDate: DateTime(1970),
id: 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD',
);

final storeSnap = Snap(
name: 'testsnap',
Expand Down Expand Up @@ -134,7 +133,7 @@ void main() {

expect(find.text(tester.l10n.snapActionUpdateLabel), findsNothing);
final l10n = tester.l10n;
expect(find.text('${snapRating.totalVotes} ${l10n.snapRatingsVotes}'),
expect(find.text(tester.l10n.snapRatingsVotes(snapRating.totalVotes)),
findsOneWidget);
expect(find.text(snapRating.ratingsBand.localize(l10n)), findsOneWidget);
});
Expand Down Expand Up @@ -178,7 +177,7 @@ void main() {

expect(find.text(tester.l10n.snapActionUpdateLabel), findsOneWidget);
final l10n = tester.l10n;
expect(find.text('${snapRating.totalVotes} ${l10n.snapRatingsVotes}'),
expect(find.text(tester.l10n.snapRatingsVotes(snapRating.totalVotes)),
findsOneWidget);
expect(find.text(snapRating.ratingsBand.localize(l10n)), findsOneWidget);
});
Expand Down Expand Up @@ -209,7 +208,7 @@ void main() {
await tester.tap(find.text(tester.l10n.snapActionInstallLabel));
verify(snapModel.install()).called(1);
final l10n = tester.l10n;
expect(find.text('${snapRating.totalVotes} ${l10n.snapRatingsVotes}'),
expect(find.text(tester.l10n.snapRatingsVotes(snapRating.totalVotes)),
findsOneWidget);
expect(find.text(snapRating.ratingsBand.localize(l10n)), findsOneWidget);
});
Expand Down Expand Up @@ -248,7 +247,7 @@ void main() {

expect(find.text(tester.l10n.snapActionUpdateLabel), findsNothing);
final l10n = tester.l10n;
expect(find.text('${snapRating.totalVotes} ${l10n.snapRatingsVotes}'),
expect(find.text(tester.l10n.snapRatingsVotes(snapRating.totalVotes)),
findsOneWidget);
expect(find.text(snapRating.ratingsBand.localize(l10n)), findsOneWidget);
});
Expand All @@ -274,7 +273,7 @@ void main() {
expect(find.text(tester.l10n.snapActionInstallLabel), findsNothing);
expect(find.byType(YaruCircularProgressIndicator), findsOneWidget);
final l10n = tester.l10n;
expect(find.text('${snapRating.totalVotes} ${l10n.snapRatingsVotes}'),
expect(find.text(tester.l10n.snapRatingsVotes(snapRating.totalVotes)),
findsNothing);
expect(find.text(snapRating.ratingsBand.localize(l10n)), findsNothing);
});
Expand Down
5 changes: 2 additions & 3 deletions test/search_page_test.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:app_center/ratings.dart';
import 'package:app_center/search.dart';
import 'package:app_center/snapd.dart';
import 'package:app_center/src/ratings/exports.dart';
import 'package:app_center/src/ratings/ratings_model.dart';
import 'package:app_center/widgets.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
Expand All @@ -10,7 +9,7 @@ import 'package:ubuntu_widgets/ubuntu_widgets.dart';

import 'test_utils.dart';

const snapId = "r4LxMVp7zWramXsJQAKdamxy6TAWlaDD";
const snapId = 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD';
const snapRating = Rating(
snapId: snapId,
totalVotes: 123,
Expand Down
12 changes: 6 additions & 6 deletions test/snap_card_test.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import 'package:app_center/src/ratings/exports.dart';
import 'package:app_center/src/ratings/ratings_model.dart';
import 'package:app_center/ratings.dart';
import 'package:app_center/widgets.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:snapd/snapd.dart';

import 'test_utils.dart';

const snapId = "r4LxMVp7zWramXsJQAKdamxy6TAWlaDD";
const snapId = 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD';
const snapRating = Rating(
snapId: snapId,
totalVotes: 123,
Expand All @@ -31,14 +30,15 @@ void main() {
overrides: [
ratingsModelProvider.overrideWith((ref, arg) => ratingsModel),
],
child: SnapCard(snap: snap),
child: const SnapCard(snap: snap),
),
);

await tester.pumpAndSettle();

expect(find.text('testsnap'), findsOneWidget);
expect(find.text('Good'), findsOneWidget);
expect(find.text(' | 123 votes'), findsOneWidget);
expect(find.text(tester.l10n.snapRatingsBandGood), findsOneWidget);
expect(
find.text(' | ${tester.l10n.snapRatingsVotes(123)}'), findsOneWidget);
});
}
2 changes: 1 addition & 1 deletion test/store_app_test.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:app_center/ratings.dart';
import 'package:app_center/snapd.dart';
import 'package:app_center/src/ratings/ratings_service.dart';
import 'package:app_center/src/store/store_app.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
Expand Down
Loading

0 comments on commit dd14cbc

Please sign in to comment.