From 7534799e99183ad9991e0803af3cbd39b4fa7b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Wed, 21 Jan 2026 01:04:09 +0100 Subject: [PATCH] Ensure Backwards Compatibility of Library Barcode --- ios/Podfile.lock | 104 +++++++++--------- .../model/student_card.dart | 8 +- .../model/student_card.g.dart | 4 +- .../views/bar_code_view.dart | 8 +- .../views/student_card_view.dart | 3 +- pubspec.lock | 76 ++++++------- 6 files changed, 105 insertions(+), 98 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9a5e9730..b1d27667 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,68 +1,68 @@ PODS: - device_info_plus (0.0.1): - Flutter - - Firebase/CoreOnly (12.6.0): - - FirebaseCore (~> 12.6.0) - - Firebase/Crashlytics (12.6.0): + - Firebase/CoreOnly (12.8.0): + - FirebaseCore (~> 12.8.0) + - Firebase/Crashlytics (12.8.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 12.6.0) - - Firebase/RemoteConfig (12.6.0): + - FirebaseCrashlytics (~> 12.8.0) + - Firebase/RemoteConfig (12.8.0): - Firebase/CoreOnly - - FirebaseRemoteConfig (~> 12.6.0) - - firebase_core (4.3.0): - - Firebase/CoreOnly (= 12.6.0) + - FirebaseRemoteConfig (~> 12.8.0) + - firebase_core (4.4.0): + - Firebase/CoreOnly (= 12.8.0) - Flutter - - firebase_crashlytics (5.0.6): - - Firebase/Crashlytics (= 12.6.0) + - firebase_crashlytics (5.0.7): + - Firebase/Crashlytics (= 12.8.0) - firebase_core - Flutter - - firebase_remote_config (6.1.3): - - Firebase/RemoteConfig (= 12.6.0) + - firebase_remote_config (6.1.4): + - Firebase/RemoteConfig (= 12.8.0) - firebase_core - Flutter - - FirebaseABTesting (12.6.0): - - FirebaseCore (~> 12.6.0) - - FirebaseCore (12.6.0): - - FirebaseCoreInternal (~> 12.6.0) + - FirebaseABTesting (12.8.0): + - FirebaseCore (~> 12.8.0) + - FirebaseCore (12.8.0): + - FirebaseCoreInternal (~> 12.8.0) - GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/Logger (~> 8.1) - - FirebaseCoreExtension (12.6.0): - - FirebaseCore (~> 12.6.0) - - FirebaseCoreInternal (12.6.0): + - FirebaseCoreExtension (12.8.0): + - FirebaseCore (~> 12.8.0) + - FirebaseCoreInternal (12.8.0): - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseCrashlytics (12.6.0): - - FirebaseCore (~> 12.6.0) - - FirebaseInstallations (~> 12.6.0) - - FirebaseRemoteConfigInterop (~> 12.6.0) - - FirebaseSessions (~> 12.6.0) + - FirebaseCrashlytics (12.8.0): + - FirebaseCore (~> 12.8.0) + - FirebaseInstallations (~> 12.8.0) + - FirebaseRemoteConfigInterop (~> 12.8.0) + - FirebaseSessions (~> 12.8.0) - GoogleDataTransport (~> 10.1) - GoogleUtilities/Environment (~> 8.1) - nanopb (~> 3.30910.0) - PromisesObjC (~> 2.4) - - FirebaseInstallations (12.6.0): - - FirebaseCore (~> 12.6.0) + - FirebaseInstallations (12.8.0): + - FirebaseCore (~> 12.8.0) - GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/UserDefaults (~> 8.1) - PromisesObjC (~> 2.4) - - FirebaseRemoteConfig (12.6.0): - - FirebaseABTesting (~> 12.6.0) - - FirebaseCore (~> 12.6.0) - - FirebaseInstallations (~> 12.6.0) - - FirebaseRemoteConfigInterop (~> 12.6.0) - - FirebaseSharedSwift (~> 12.6.0) + - FirebaseRemoteConfig (12.8.0): + - FirebaseABTesting (~> 12.8.0) + - FirebaseCore (~> 12.8.0) + - FirebaseInstallations (~> 12.8.0) + - FirebaseRemoteConfigInterop (~> 12.8.0) + - FirebaseSharedSwift (~> 12.8.0) - GoogleUtilities/Environment (~> 8.1) - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseRemoteConfigInterop (12.6.0) - - FirebaseSessions (12.6.0): - - FirebaseCore (~> 12.6.0) - - FirebaseCoreExtension (~> 12.6.0) - - FirebaseInstallations (~> 12.6.0) + - FirebaseRemoteConfigInterop (12.8.0) + - FirebaseSessions (12.8.0): + - FirebaseCore (~> 12.8.0) + - FirebaseCoreExtension (~> 12.8.0) + - FirebaseInstallations (~> 12.8.0) - GoogleDataTransport (~> 10.1) - GoogleUtilities/Environment (~> 8.1) - GoogleUtilities/UserDefaults (~> 8.1) - nanopb (~> 3.30910.0) - PromisesSwift (~> 2.1) - - FirebaseSharedSwift (12.6.0) + - FirebaseSharedSwift (12.8.0) - Flutter (1.0.0) - flutter_contacts (0.0.1): - Flutter @@ -234,20 +234,20 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe - Firebase: a451a7b61536298fd5cbfe3a746fd40443a50679 - firebase_core: ba00a168e719694f38960502ceb560285603d073 - firebase_crashlytics: 13f4b77e9ce2a84b1f8ea07f293db5b6213ce1cf - firebase_remote_config: 4315c34bfba52eb501b69cfa84d519f340385a37 - FirebaseABTesting: 119f0a2b2e68b1ae05d248c5adb2455f148f20c1 - FirebaseCore: 0e38ad5d62d980a47a64b8e9301ffa311457be04 - FirebaseCoreExtension: 032fd6f8509e591fda8cb76f6651f20d926b121f - FirebaseCoreInternal: 69bf1306a05b8ac43004f6cc1f804bb7b05b229e - FirebaseCrashlytics: 3d6248c50726ee7832aef0e53cb84c9e64d9fa7e - FirebaseInstallations: 631b38da2e11a83daa4bfb482f79d286a5dfa7ad - FirebaseRemoteConfig: c5dfe22828a7ae7673d16224ea92743687e993df - FirebaseRemoteConfigInterop: 3443b8cb8fffd76bb3e03b2a84bfd3db952fcda4 - FirebaseSessions: 2e8f808347e665dff3e5843f275715f07045297d - FirebaseSharedSwift: 79f27fff0addd15c3de19b87fba426f3cc2c964f + Firebase: 9a58fdbc9d8655ed7b79a19cf9690bb007d3d46d + firebase_core: ee30637e6744af8e0c12a6a1e8a9718506ec2398 + firebase_crashlytics: 28b8f39df8104131376393e6af658b8b77dd120f + firebase_remote_config: 3a5639062e130c4d4b7c4bae347cc3bac90f5a1e + FirebaseABTesting: 31266c7845f9adde0f2e8a59267e9c82e4050898 + FirebaseCore: 0dbad74bda10b8fb9ca34ad8f375fb9dd3ebef7c + FirebaseCoreExtension: 6605938d51f765d8b18bfcafd2085276a252bee2 + FirebaseCoreInternal: fe5fa466aeb314787093a7dce9f0beeaad5a2a21 + FirebaseCrashlytics: fb31c6907e5b52aa252668394d3f1ab326df1511 + FirebaseInstallations: 6a14ab3d694ebd9f839c48d330da5547e9ca9dc0 + FirebaseRemoteConfig: e9e3909162a05bc0e796326255fd43250783a2a9 + FirebaseRemoteConfigInterop: 869ddca16614f979e5c931ece11fbb0b8729ed41 + FirebaseSessions: d614ca154c63dbbc6c10d6c38259c2162c4e7c9b + FirebaseSharedSwift: f57ed48f4542b2d7eb4738f4f23ba443f78b3780 Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 flutter_contacts: 5383945387e7ca37cf963d4be57c21f2fc15ca9f flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf diff --git a/lib/studentCardComponent/model/student_card.dart b/lib/studentCardComponent/model/student_card.dart index 8c896ec9..a0465801 100644 --- a/lib/studentCardComponent/model/student_card.dart +++ b/lib/studentCardComponent/model/student_card.dart @@ -16,7 +16,10 @@ class StudentCard { final String studyID; @JsonKey(name: "bibliotheksnummer") - final String libraryID; + final String? libraryID; + + @JsonKey(name: "bibliothekskennung") + final String? libraryCode; @JsonKey(name: "chip_id_prime") final String chipID; @@ -40,7 +43,8 @@ class StudentCard { required this.name, required this.birthday, required this.studyID, - required this.libraryID, + this.libraryID, + this.libraryCode, required this.chipID, required this.semester, required this.validFrom, diff --git a/lib/studentCardComponent/model/student_card.g.dart b/lib/studentCardComponent/model/student_card.g.dart index 09a86346..f4e99626 100644 --- a/lib/studentCardComponent/model/student_card.g.dart +++ b/lib/studentCardComponent/model/student_card.g.dart @@ -11,7 +11,8 @@ StudentCard _$StudentCardFromJson(Map json) => StudentCard( name: json['name'] as String, birthday: DateTime.parse(json['geburtsdatum'] as String), studyID: json['matrikelnummer'] as String, - libraryID: json['bibliotheksnummer'] as String, + libraryID: json['bibliotheksnummer'] as String?, + libraryCode: json['bibliothekskennung'] as String?, chipID: json['chip_id_prime'] as String, semester: json['semester'] as String, validFrom: DateTime.parse(json['gueltig_ab'] as String), @@ -31,6 +32,7 @@ Map _$StudentCardToJson(StudentCard instance) => 'geburtsdatum': instance.birthday.toIso8601String(), 'matrikelnummer': instance.studyID, 'bibliotheksnummer': instance.libraryID, + 'bibliothekskennung': instance.libraryCode, 'chip_id_prime': instance.chipID, 'semester': instance.semester, 'gueltig_ab': instance.validFrom.toIso8601String(), diff --git a/lib/studentCardComponent/views/bar_code_view.dart b/lib/studentCardComponent/views/bar_code_view.dart index ba655a6b..9ba9257b 100644 --- a/lib/studentCardComponent/views/bar_code_view.dart +++ b/lib/studentCardComponent/views/bar_code_view.dart @@ -4,9 +4,9 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; class BarCodeView extends StatelessWidget { - final String libraryID; + final String payload; - const BarCodeView({super.key, required this.libraryID}); + const BarCodeView({super.key, required this.payload}); @override Widget build(BuildContext context) { @@ -25,7 +25,7 @@ class BarCodeView extends StatelessWidget { child: BarcodeWidget( height: 70, padding: const EdgeInsets.all(10), - data: libraryID, + data: payload, barcode: Barcode.code128(), drawText: false, ), @@ -34,7 +34,7 @@ class BarCodeView extends StatelessWidget { Padding( padding: EdgeInsets.symmetric(vertical: context.halfPadding), child: Text( - "${context.tr("libraryNumber")}: $libraryID", + payload, style: Theme.of(context).textTheme.labelLarge, ), ), diff --git a/lib/studentCardComponent/views/student_card_view.dart b/lib/studentCardComponent/views/student_card_view.dart index 916da802..00af579c 100644 --- a/lib/studentCardComponent/views/student_card_view.dart +++ b/lib/studentCardComponent/views/student_card_view.dart @@ -32,7 +32,8 @@ class StudentCardView extends ConsumerWidget { _header(lastFetched, context, ref), _warningCard(context), InformationView(studentCard: data), - BarCodeView(libraryID: data.libraryID), + if (data.libraryCode ?? data.libraryID case final payload?) + BarCodeView(payload: payload), ], ); } else { diff --git a/pubspec.lock b/pubspec.lock index 38ef6ebe..444d62c8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: e4a1b612fd2955908e26116075b3a4baf10c353418ca645b4deae231c82bf144 + sha256: cd83f7d6bd4e4c0b0b4fef802e8796784032e1cc23d7b0e982cf5d05d9bbe182 url: "https://pub.dev" source: hosted - version: "1.3.65" + version: "1.3.66" analyzer: dependency: transitive description: @@ -213,10 +213,10 @@ packages: dependency: transitive description: name: code_assets - sha256: ae0db647e668cbb295a3527f0938e4039e004c80099dce2f964102373f5ce0b5 + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" url: "https://pub.dev" source: hosted - version: "0.19.10" + version: "1.0.0" code_builder: dependency: transitive description: @@ -373,10 +373,10 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: "29cfa93c771d8105484acac340b5ea0835be371672c91405a300303986f4eba9" + sha256: "923085c881663ef685269b013e241b428e1fb03cdd0ebde265d9b40ff18abf80" url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.4.0" firebase_core_platform_interface: dependency: transitive description: @@ -389,50 +389,50 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: a631bbfbfa26963d68046aed949df80b228964020e9155b086eff94f462bbf1f + sha256: "83e7356c704131ca4d8d8dd57e360d8acecbca38b1a3705c7ae46cc34c708084" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.0" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: "8d52022ee6fdd224e92c042f297d1fd0ec277195c49f39fa61b8cc500a639f00" + sha256: a6e6cb8b2ea1214533a54e4c1b11b19c40f6a29333f3ab0854a479fdc3237c5b url: "https://pub.dev" source: hosted - version: "5.0.6" + version: "5.0.7" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: "97c6a97b35e3d3dafe38fb053a65086a1efb125022d292161405848527cc25a4" + sha256: fc6837c4c64c48fa94cab8a872a632b9194fa9208ca76a822f424b3da945584d url: "https://pub.dev" source: hosted - version: "3.8.16" + version: "3.8.17" firebase_remote_config: dependency: "direct main" description: name: firebase_remote_config - sha256: "50cbbef2acf135fa94ed17b585a49d38248951892044ceedd7a26269eff3447b" + sha256: "6d7be334b726537b3aa3a3ef1db9782951cd93c2b996eebc33f64a9f140e0409" url: "https://pub.dev" source: hosted - version: "6.1.3" + version: "6.1.4" firebase_remote_config_platform_interface: dependency: transitive description: name: firebase_remote_config_platform_interface - sha256: effb7be478767bc60a46d79175a862607fc4904cffea27b2a2d049da774887c6 + sha256: f895915923bebb9e8b36a6387fac31a9dd36fbb63fa2ee1ea2cbe309634eecdf url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.0.7" firebase_remote_config_web: dependency: transitive description: name: firebase_remote_config_web - sha256: "20f1d40cb2b345dc5e7db1603c33d0403c78b09036f5cf3a5c778baa2594bbb5" + sha256: a4de6b86e5eb0416a46948dcb1fa9fce6a71d41f80fa107f6e202ae579ec81b2 url: "https://pub.dev" source: hosted - version: "1.10.2" + version: "1.10.3" fixnum: dependency: transitive description: @@ -732,10 +732,10 @@ packages: dependency: transitive description: name: hooks - sha256: "5410b9f4f6c9f01e8ff0eb81c9801ea13a3c3d39f8f0b1613cda08e27eab3c18" + sha256: "5d309c86e7ce34cd8e37aa71cb30cb652d3829b900ab145e4d9da564b31d59f7" url: "https://pub.dev" source: hosted - version: "0.20.5" + version: "1.0.0" html: dependency: "direct main" description: @@ -948,10 +948,10 @@ packages: dependency: transitive description: name: native_toolchain_c - sha256: f8872ea6c7a50ce08db9ae280ca2b8efdd973157ce462826c82f3c3051d154ce + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" url: "https://pub.dev" source: hosted - version: "0.17.2" + version: "0.17.4" node_preamble: dependency: transitive description: @@ -964,10 +964,10 @@ packages: dependency: transitive description: name: objective_c - sha256: "55eb67ede1002d9771b3f9264d2c9d30bc364f0267bc1c6cc0883280d5f0c7cb" + sha256: "9922a1ad59ac5afb154cc948aa6ded01987a75003651d0a2866afc23f4da624e" url: "https://pub.dev" source: hosted - version: "9.2.2" + version: "9.2.3" octo_image: dependency: transitive description: @@ -1345,10 +1345,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "585bc140f20da42c584ece2df28f4d9ef2566955332b626f655957b3a8c8ad54" + sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17" url: "https://pub.dev" source: hosted - version: "4.1.2" + version: "4.2.0" source_helper: dependency: transitive description: @@ -1489,42 +1489,42 @@ packages: dependency: "direct main" description: name: syncfusion_flutter_calendar - sha256: af27535ba4d3c6e64a318172c8a76363c174863b4e2583b21555c47be92c315d + sha256: "22c562e3ffaab8eef48138aa16adbfb9e15cb10e13ca6ebb6ba0f1001a5302ad" url: "https://pub.dev" source: hosted - version: "32.1.23" + version: "32.1.24" syncfusion_flutter_charts: dependency: "direct main" description: name: syncfusion_flutter_charts - sha256: "15e2b3576d00a03c003f71cf2c98f0eb61777d15e1590f4e83dff0f8dc50b7d8" + sha256: "9cbc455b7aeb3598c22db7f47c3e424b660eb812507b36e88ae4d2e529052db8" url: "https://pub.dev" source: hosted - version: "32.1.23" + version: "32.1.24" syncfusion_flutter_core: dependency: "direct main" description: name: syncfusion_flutter_core - sha256: c9446faa7a5cd8f6496357e41e8c4b24e158a8760222d32a5837abc35dd5d629 + sha256: "2c6ba5e21f944e9c18db7be9fb40a9e09747b6f9942c9c0e77eb573c15e68338" url: "https://pub.dev" source: hosted - version: "32.1.23" + version: "32.1.24" syncfusion_flutter_datepicker: dependency: "direct main" description: name: syncfusion_flutter_datepicker - sha256: "30514aa392b569fbd1a11dc402a21b0c24ece05ce8f8f90aee7bfa92de99ed1e" + sha256: "4be2ad5fe823a63a628aa619ca647d5dd42f6613b2fda6d87c92851c77f4ec15" url: "https://pub.dev" source: hosted - version: "32.1.23" + version: "32.1.24" syncfusion_localizations: dependency: transitive description: name: syncfusion_localizations - sha256: ad27e3bfc98d079c0a19b818f240ed406e90eaf770bc7ad527319700f4ae2cac + sha256: cefc5a9020255a3135a4bed52ea74b51ec9003fa33243552d59bf20fb72a1579 url: "https://pub.dev" source: hosted - version: "32.1.23" + version: "32.1.24" synchronized: dependency: transitive description: @@ -1577,10 +1577,10 @@ packages: dependency: transitive description: name: timezone - sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 + sha256: "784a5e34d2eb62e1326f24d6f600aaaee452eb8ca8ef2f384a59244e292d158b" url: "https://pub.dev" source: hosted - version: "0.10.1" + version: "0.11.0" typed_data: dependency: transitive description: