iop/apps/client/lib/main.dart
toki 9024c852df refactor: architecture refactor - fleet polling & client state split
- Move fleet polling logic to control orchestrator
- Split client state management into separate controller/repository
- Add client bootstrap and home page components
- Update HTTP fleet handlers and views
- Add unit tests for client bootstrap and status controller
- Archive completed subtask documents
2026-06-06 19:10:47 +09:00

82 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:iop_console/iop_console.dart';
import 'client_bootstrap.dart';
import 'client_home_page.dart';
import 'control_plane_status_client.dart';
import 'iop_wire/client_wire_client.dart';
import 'src/integrations/mattermost/mattermost_push_host_integration.dart';
const iopDefaultCapabilityPack = IopCapabilityPack(
capabilities: [
IopCapability(
name: 'Edge Control',
description: 'Monitor and configure Edge routing groups.',
),
IopCapability(
name: 'Node Management',
description: 'Track node registration and execution lanes.',
),
IopCapability(
name: 'Runtime Dispatch',
description: 'Trigger manual adapter execution sessions.',
),
IopCapability(
name: 'Execution Tracing',
description: 'View live logs and execution metrics stream.',
),
IopCapability(
name: 'Maintenance Mode',
description: 'Trigger node bootstrap or cluster repairs.',
),
],
);
Future<void> main() => runIopClient();
Future<void> applyFullscreenMode() async {
await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
),
);
}
class IopClientApp extends StatelessWidget {
final ClientWireClient? testClient;
final MattermostPushHostIntegration? mattermostHost;
final ControlPlaneStatusRepository? statusRepository;
const IopClientApp({
super.key,
this.testClient,
this.mattermostHost,
this.statusRepository,
});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'IOP Client',
debugShowCheckedModeBanner: false,
theme: ThemeData.dark(useMaterial3: true).copyWith(
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFF6366F1),
brightness: Brightness.dark,
primary: const Color(0xFF6366F1),
secondary: const Color(0xFF10B981),
),
scaffoldBackgroundColor: const Color(0xFF0F172A),
),
home: ClientHomePage(
testClient: testClient,
mattermostHost: mattermostHost,
statusRepository: statusRepository,
),
);
}
}