mirror of
https://github.com/immich-app/immich.git
synced 2025-06-23 15:30:51 -04:00
* initial cast framework complete and mocked cast dialog working * wip casting * casting works! just need to add session key check and remote video controls * cleanup of classes * add session expiration checks * cast dialog now shows connected device at top of list with a list header. Discovered devices are also cached for app session. * cast video player finalized * show fullsize assets on casting * translation already happens on the text element * remove prints * fix lintings * code review changes from @shenlong-tanwen * fix connect method override * fix alphabetization * remove important * filter chromecast audio devices * fix some disconnect command ordering issues and unawaited futures * remove prints * only disconnect if we are connected * don't try to reconnect if its the current device * add cast button to top bar * format sessions api * more formatting issues fixed * add snack bar to tell user that we cannot cast an asset that is not uploaded to server * make casting icon change to primary color when casting is active * only show casting snackbar if we are casting * dont show cast button if asset is remote and we are not casting * stop playing media if we seek to an asset that is not remote * remove https check since it works with local http IP addresses * remove unneeded imports * fix recasting when socket closes * fix info plist formatting * only show cast button if there is an active websocket connection (ie the server is accessible) * add device capability bitmask checks * small comment about bitmask
48 lines
1.2 KiB
Dart
48 lines
1.2 KiB
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/interfaces/sessions_api.interface.dart';
|
|
import 'package:immich_mobile/models/sessions/session_create_response.model.dart';
|
|
import 'package:immich_mobile/providers/api.provider.dart';
|
|
import 'package:immich_mobile/repositories/api.repository.dart';
|
|
import 'package:openapi/api.dart';
|
|
|
|
final sessionsAPIRepositoryProvider = Provider(
|
|
(ref) => SessionsAPIRepository(
|
|
ref.watch(apiServiceProvider).sessionsApi,
|
|
),
|
|
);
|
|
|
|
class SessionsAPIRepository extends ApiRepository
|
|
implements ISessionAPIRepository {
|
|
final SessionsApi _api;
|
|
|
|
SessionsAPIRepository(this._api);
|
|
|
|
@override
|
|
Future<SessionCreateResponse> createSession(
|
|
String deviceType,
|
|
String deviceOS, {
|
|
int? duration,
|
|
}) async {
|
|
final dto = await checkNull(
|
|
_api.createSession(
|
|
SessionCreateDto(
|
|
deviceType: deviceType,
|
|
deviceOS: deviceOS,
|
|
duration: duration,
|
|
),
|
|
),
|
|
);
|
|
|
|
return SessionCreateResponse(
|
|
id: dto.id,
|
|
current: dto.current,
|
|
deviceType: deviceType,
|
|
deviceOS: deviceOS,
|
|
expiresAt: dto.expiresAt,
|
|
createdAt: dto.createdAt,
|
|
updatedAt: dto.updatedAt,
|
|
token: dto.token,
|
|
);
|
|
}
|
|
}
|