spotube/lib/provider/server/server.dart
2024-06-24 22:26:44 +06:00

35 lines
929 B
Dart

import 'dart:io';
import 'dart:math';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shelf/shelf_io.dart';
import 'package:spotube/provider/server/pipeline.dart';
import 'package:spotube/provider/server/router.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/logger/logger.dart';
final serverProvider = FutureProvider(
(ref) async {
final pipeline = ref.watch(pipelineProvider);
final router = ref.watch(serverRouterProvider);
final port = Random().nextInt(17500) + 5000;
SpotubeMedia.serverPort = port;
final server = await serve(
pipeline.addHandler(router.call),
InternetAddress.anyIPv4,
port,
);
AppLogger.log
.t('Playback server at http://${server.address.host}:${server.port}');
ref.onDispose(() {
server.close();
});
return (server: server, port: port);
},
);