Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: make use of snap_name in server replies #1872

Merged
merged 10 commits into from
Dec 17, 2024
11 changes: 10 additions & 1 deletion melos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ scripts:

# run build_runner to generate code in all packages
generate: >
melos exec -c 1 --fail-fast --depends-on=build_runner -- \
melos exec -c 1 --fail-fast --depends-on=build_runner --order-dependents -- \
fvm dart run build_runner build --delete-conflicting-outputs

# run gen-l10n to generate localizations in all packages
Expand All @@ -72,3 +72,12 @@ scripts:

# run pub upgrade in all packages
upgrade: melos pub upgrade

# generate protobuf files in app_center_ratings_client
protoc:
run: |
rm -rf ./packages/app_center_ratings_client/lib/src/generated/* &&
protoc \
--dart_out=grpc:./packages/app_center_ratings_client/lib/src/generated \
-I./packages/app_center_ratings_client/protos ./packages/app_center_ratings_client/protos/*.proto \
google/protobuf/timestamp.proto google/protobuf/empty.proto
3 changes: 2 additions & 1 deletion packages/app_center/lib/ratings/rated_category_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ class RatedCategoryModel extends _$RatedCategoryModel {
for (final category in categories) {
final chart = await _ratings.getChart(category);
for (var i = 0; snaps.length < numberOfSnaps && i < chart.length; i++) {
final snap = await _snapd.findById(chart[i].rating.snapId);
final snap =
(await _snapd.find(name: chart[i].rating.snapName)).singleOrNull;
if (snap != null && snap.screenshotUrls.isNotEmpty) {
snaps.add(snap);
}
Expand Down
199 changes: 0 additions & 199 deletions packages/app_center/lib/ratings/rated_category_model.g.dart

This file was deleted.

1 change: 1 addition & 0 deletions packages/app_center/lib/ratings/ratings_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class RatingsData with _$RatingsData {
required int snapRevision,
required Rating? rating,
required VoteStatus? voteStatus,
required String snapName,
}) = _RatingsData;

factory RatingsData.fromJson(Map<String, dynamic> json) =>
Expand Down
2 changes: 2 additions & 0 deletions packages/app_center/lib/ratings/ratings_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class RatingsModel extends _$RatingsModel {
snapRevision: snap.revision,
rating: rating,
voteStatus: _getUserVote(snap.revision, votes),
snapName: snapName,
);

cacheFile.writeRatingsDataSync(ratingsData);
Expand All @@ -60,6 +61,7 @@ class RatingsModel extends _$RatingsModel {
snapRevision: ratingsData.snapRevision,
voteUp: voteUp,
dateTime: clock.now(),
snapName: ratingsData.snapName,
);
await _ratings.vote(vote);
state = AsyncData(ratingsData.copyWith(voteStatus: voteStatus));
Expand Down
5 changes: 0 additions & 5 deletions packages/app_center/lib/ratings/ratings_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,6 @@ class RatingsService {
await client.delete(_jwt!);
}

Future<List<ratings.Vote>> listMyVotes(String snapFilter) async {
await _ensureValidToken();
return client.listMyVotes(snapFilter, _jwt!);
}

Future<List<ratings.Vote>> getSnapVotes(String snapId) async {
await _ensureValidToken();
return client.getSnapVotes(snapId, _jwt!);
Expand Down
26 changes: 0 additions & 26 deletions packages/app_center/lib/snapd/snapd_service.dart
Original file line number Diff line number Diff line change
@@ -1,34 +1,8 @@
import 'package:app_center/snapd/snapd_cache.dart';
import 'package:app_center/snapd/snapd_watcher.dart';
import 'package:collection/collection.dart';
import 'package:snapd/snapd.dart';

class SnapdService extends SnapdClient with SnapdCache, SnapdWatcher {
Future<void> waitChange(String changeId) =>
watchChange(changeId).firstWhere((change) => change.ready);

Future<Snap?> findById(String snapId) async {
final queryParams = {
'series': '16',
'remote': 'true',
'snap-id': snapId,
};
Map<String, dynamic> result;
try {
result = await getAssertions(
assertion: 'snap-declaration',
params: queryParams,
);
} on Exception catch (_) {
return null;
}

if (result.isEmpty) {
return null;
}
final declaration = SnapDeclaration.fromJson(result);
final findResult = await find(name: declaration.snapName);
return findResult
.singleWhereOrNull((element) => element.id == declaration.snapId);
}
}
2 changes: 2 additions & 0 deletions packages/app_center/test/app_card_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import 'package:ubuntu_service/ubuntu_service.dart';
import 'test_utils.dart';

const snapId = 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD';
const snapName = 'signal-desktop';
const snapRating = Rating(
snapId: snapId,
totalVotes: 123,
ratingsBand: RatingsBand.good,
snapName: snapName,
);

final snap = createSnap(
Expand Down
2 changes: 2 additions & 0 deletions packages/app_center/test/games_page_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ import 'package:ubuntu_service/ubuntu_service.dart';
import 'test_utils.dart';

const snapId = 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD';
const snapName = 'signal-desktop';
const snapRating = Rating(
snapId: snapId,
totalVotes: 123,
ratingsBand: RatingsBand.good,
snapName: snapName,
);

void main() {
Expand Down
14 changes: 9 additions & 5 deletions packages/app_center/test/ratings_model_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,26 @@ import 'test_utils.dart';
void main() {
final snap = createSnap(
name: 'firefox',
id: 'firefox',
id: '1234',
revision: 42,
);

setUp(() {
registerMockSnapdService(storeSnap: snap);
registerMockRatingsService(
rating: const Rating(
snapId: 'firefox',
snapId: '1234',
totalVotes: 1337,
ratingsBand: RatingsBand.veryGood,
snapName: 'firefox',
),
snapVotes: [
Vote(
snapId: 'firefox',
snapId: '1234',
snapRevision: 42,
voteUp: true,
dateTime: DateTime(1970),
snapName: 'firefox',
),
],
);
Expand All @@ -43,9 +45,10 @@ void main() {
ratingsData.rating,
equals(
const Rating(
snapId: 'firefox',
snapId: '1234',
totalVotes: 1337,
ratingsBand: RatingsBand.veryGood,
snapName: 'firefox',
),
),
);
Expand All @@ -66,9 +69,10 @@ void main() {
mockService.vote(
Vote(
dateTime: DateTime(1984),
snapId: 'firefox',
snapId: '1234',
snapRevision: 42,
voteUp: false,
snapName: 'firefox',
),
),
).called(1);
Expand Down
Loading
Loading