feat: Enhance certificate upload process with file change verification and signed URL generation

This commit is contained in:
Achintha Isuru
2026-03-01 21:17:45 -05:00
parent 49ecede35f
commit 8e95589551
7 changed files with 56 additions and 76 deletions

View File

@@ -78,22 +78,16 @@ class BankAccountPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SecurityNotice(strings: strings),
const SizedBox(height: UiConstants.space32),
if (state.accounts.isEmpty)
if (state.accounts.isEmpty) ...<Widget>[
const SizedBox(height: UiConstants.space32),
const UiEmptyState(
icon: UiIcons.building,
title: 'No accounts yet',
description:
'Add your first bank account to get started',
)
else ...<Widget>[
Text(
strings.linked_accounts,
style: UiTypography.headline4m.copyWith(
color: UiColors.textPrimary,
),
),
const SizedBox(height: UiConstants.space3),
] else ...<Widget>[
const SizedBox(height: UiConstants.space4),
...state.accounts.map<Widget>(
(StaffBankAccount account) =>
AccountCard(account: account, strings: strings),

View File

@@ -19,11 +19,12 @@ class TimeCardPage extends StatefulWidget {
}
class _TimeCardPageState extends State<TimeCardPage> {
final TimeCardBloc _bloc = Modular.get<TimeCardBloc>();
late final TimeCardBloc _bloc;
@override
void initState() {
super.initState();
_bloc = Modular.get<TimeCardBloc>();
_bloc.add(LoadTimeCards(DateTime.now()));
}
@@ -33,25 +34,9 @@ class _TimeCardPageState extends State<TimeCardPage> {
return BlocProvider.value(
value: _bloc,
child: Scaffold(
backgroundColor: UiColors.bgPrimary,
appBar: AppBar(
backgroundColor: UiColors.bgPopup,
elevation: 0,
leading: IconButton(
icon: const Icon(
UiIcons.chevronLeft,
color: UiColors.iconSecondary,
),
onPressed: () => Modular.to.popSafe(),
),
title: Text(
t.staff_time_card.title,
style: UiTypography.headline4m.textPrimary,
),
bottom: PreferredSize(
preferredSize: const Size.fromHeight(1.0),
child: Container(color: UiColors.border, height: 1.0),
),
appBar: UiAppBar(
title: t.staff_time_card.title,
showBackButton: true,
),
body: BlocConsumer<TimeCardBloc, TimeCardState>(
listener: (BuildContext context, TimeCardState state) {