setApplicationFavorite method

Future<void> setApplicationFavorite({
  1. required String applicationCode,
  2. required bool isFavorite,
})

Sets one app-local favorite without changing NTUT Portal bookmarks.

Implementation

Future<void> setApplicationFavorite({
  required String applicationCode,
  required bool isFavorite,
}) async {
  if (applicationCode.isEmpty) {
    throw ArgumentError.value(
      applicationCode,
      'applicationCode',
      'Application code cannot be empty.',
    );
  }

  final user = await _database.select(_database.users).getSingleOrNull();
  if (user == null) return;
  if (isFavorite) {
    await _database
        .into(_database.portalApplicationFavorites)
        .insert(
          PortalApplicationFavoritesCompanion.insert(
            user: user.id,
            applicationCode: applicationCode,
          ),
          mode: .insertOrIgnore,
        );
    return;
  }

  await (_database.delete(_database.portalApplicationFavorites)..where(
        (row) =>
            row.user.equals(user.id) &
            row.applicationCode.equals(applicationCode),
      ))
      .go();
}