dev #1

Merged
aefril merged 128 commits from dev into main 2025-08-13 17:19:48 +00:00
2 changed files with 48 additions and 8 deletions
Showing only changes of commit 94725964ea - Show all commits

View File

@ -131,4 +131,40 @@ class TableRemoteDataSource {
return const Left('Unexpected error occurred'); return const Left('Unexpected error occurred');
} }
} }
Future<Either<String, bool>> transferTable({
required String fromTableId,
required String toTableId,
}) async {
try {
final authData = await AuthLocalDataSource().getAuthData();
final url = '${Variables.baseUrl}/api/v1/tables/transfer';
final response = await dio.put(
url,
data: {
"from_table": fromTableId,
"to_table": toTableId,
},
options: Options(
headers: {
'Authorization': 'Bearer ${authData.token}',
'Accept': 'application/json',
},
),
);
if (response.statusCode == 200 || response.statusCode == 201) {
return Right(true);
} else {
return const Left('Failed to create table');
}
} on DioException catch (e) {
log("Dio error: ${e.message}");
return Left(e.response?.data['message'] ?? 'Gagal membuat table');
} catch (e) {
log("Unexpected error: $e");
return const Left('Unexpected error occurred');
}
}
} }

View File

@ -43,6 +43,7 @@ class _TablePageState extends State<TablePage> {
// Ubah function toggleSelectTable menjadi selectTable // Ubah function toggleSelectTable menjadi selectTable
void selectTable(TableModel table) { void selectTable(TableModel table) {
if (table.status == 'occupied') return;
setState(() { setState(() {
if (selectedTable == table) { if (selectedTable == table) {
selectedTable = null; // Deselect jika table yang sama diklik selectedTable = null; // Deselect jika table yang sama diklik
@ -115,6 +116,7 @@ class _TablePageState extends State<TablePage> {
builder: (context, state) { builder: (context, state) {
return state.maybeWhen( return state.maybeWhen(
orElse: () => SizedBox.shrink(), orElse: () => SizedBox.shrink(),
loading: () => const Center(child: CircularProgressIndicator()),
success: (tables) => SafeArea( success: (tables) => SafeArea(
child: Stack( child: Stack(
children: [ children: [
@ -207,15 +209,17 @@ class _TablePageState extends State<TablePage> {
local.dx.clamp(0, mapWidth - 120); local.dx.clamp(0, mapWidth - 120);
table.positionY = table.positionY =
local.dy.clamp(0, mapHeight - 80); local.dy.clamp(0, mapHeight - 80);
});
context context
.read<ChangePositionTableBloc>() .read<ChangePositionTableBloc>()
.add(ChangePositionTableEvent .add(ChangePositionTableEvent
.changePositionTable( .changePositionTable(
tableId: table.id ?? "", tableId: table.id ?? "",
position: details.offset, position: Offset(
table.positionX ?? 0.0,
table.positionY ?? 0.0,
),
)); ));
});
}, },
child: GestureDetector( child: GestureDetector(
onTap: () => selectTable(table), onTap: () => selectTable(table),