-
-
Notifications
You must be signed in to change notification settings - Fork 94
Description
Description
When attempting to play media stored on a sleeping hard drive through Fladder's Native & Selfhosted Web clients, the application enters an indefinite loading state and never begins playback, even after the drives have successfully spun up. The client appears to not poll or check for status updates from the Jellyfin server after the initial request. Pausing the playback, waiting and then unpausing does not have any effect as it still continously loads.
Expected Behavior:
After the 15-20 second drive spin-up period, Fladder should begin media playback automatically, similar to the behavior of:
Jellyfin Web client
Jellyfin Desktop client
Other third-party clients (Delfin (Linux), Streamyfin (iOS), Swiftfin (iOS, tvOS)
Actual Behavior:
Fladder clients remain in a perpetual loading state and never initiate playback, requiring the user to cancel and retry the playback request (after cancelling). If you play 'Continue watching' media that has progress already and have to cancel out, the playback progress is also reset unintentionally for that media item.
(log attached is what spits out after a while but im not sure if its related)
(screenshot posted of the macos client)
Reproduction steps
1. Configure Jellyfin server with a media library stored on a hard drive that enters sleep mode after inactivity
2. Allow the drive to enter sleep mode
3. Open Fladder client (Linux AppImage, macOS app, iOS app or Selfhosted Web App)
4. Navigate to media stored on the sleeping drive
5. Click play on any media item
6. Observe that Fladder remains in a loading state indefinitelyScreenshots
Logs
[SEVERE | Flutter error: SocketException: Connection failed (OS Error: No such file or directory, errno = 2), address = /var/run/dbus/system_bus_socket, port = 0, 2025-06-27T21:30:42.838919
#0 _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:822)
#1 _NativeSocket.connect (dart:io-patch/socket_patch.dart:1147)
#2 _RawSocket.connect (dart:io-patch/socket_patch.dart:2270)
#3 RawSocket.connect (dart:io-patch/socket_patch.dart:31)
#4 DBusClient._openSocket (package:dbus/src/dbus_client.dart:784)
#5 DBusClient._connect (package:dbus/src/dbus_client.dart:804)
#6 DBusClient.callMethod (package:dbus/src/dbus_client.dart:624)
#7 DBusClient.getNameOwner (package:dbus/src/dbus_client.dart:465)
#8 DBusClient._findUniqueName (package:dbus/src/dbus_client.dart:641)
#9 DBusSignalStream._onListen (package:dbus/src/dbus_client.dart:132)
#10 _runGuarded (dart:async/stream_controller.dart:838)
#11 _BroadcastStreamController._subscribe (dart:async/broadcast_stream_controller.dart:220)
#12 _ControllerStream._createSubscription (dart:async/stream_controller.dart:854)
#13 _StreamImpl.listen (dart:async/stream_impl.dart:516)
#14 DBusSignalStream.listen (package:dbus/src/dbus_client.dart:124)
#15 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:141)
#16 _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:105)
#17 _ForwardingStream.listen (dart:async/stream_pipe.dart:96)
#18 NetworkManagerClient.connect (package:nm/src/network_manager_client.dart:2303)
#19 ConnectivityPlusLinuxPlugin._startListenConnectivity (package:connectivity_plus/src/connectivity_plus_linux.dart:73)
#20 _runGuarded (dart:async/stream_controller.dart:838)
#21 _BroadcastStreamController._subscribe (dart:async/broadcast_stream_controller.dart:220)
#22 _ControllerStream._createSubscription (dart:async/stream_controller.dart:854)
#23 _StreamImpl.listen (dart:async/stream_impl.dart:516)
#24 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:141)
#25 new _StateStreamSubscription (dart:async/stream_pipe.dart:373)
#26 _DistinctStream._createSubscription (dart:async/stream_pipe.dart:500)
#27 _ForwardingStream.listen (dart:async/stream_pipe.dart:96)
#28 ConnectivityStatus.build (package:fladder/providers/connectivity_provider.dart:24)
#29 NotifierProviderImpl.runNotifierBuild (package:riverpod/src/notifier/base.dart:166)
#30 NotifierProviderElement.create (package:riverpod/src/notifier/base.dart:212)
#31 ProviderElementBase.buildState (package:riverpod/src/framework/element.dart:426)
#32 ProviderElementBase.mount (package:riverpod/src/framework/element.dart:228)
#33 _StateReader._create (package:riverpod/src/framework/container.dart:47)
#34 _StateReader.getElement (package:riverpod/src/framework/container.dart:35)
#35 ProviderContainer.readProviderElement (package:riverpod/src/framework/container.dart:479)
#36 ProviderBase.addListener (package:riverpod/src/framework/provider_base.dart:79)
#37 ProviderContainer.listen (package:riverpod/src/framework/container.dart:280)
#38 ConsumerStatefulElement.watch.<anonymous closure> (package:flutter_riverpod/src/consumer.dart:564)
#39 _LinkedHashMapMixin.putIfAbsent (dart:_compact_hash:674)
#40 ConsumerStatefulElement.watch (package:flutter_riverpod/src/consumer.dart:557)
#41 _PlayerSettingsPageState.build (package:fladder/screens/settings/player_settings_page.dart:44)
#42 StatefulElement.build (package:flutter/src/widgets/framework.dart:5823)
#43 ConsumerStatefulElement.build (package:flutter_riverpod/src/consumer.dart:539)
#44 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5715)
#45 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5874)
#46 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#47 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5697)
#48 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5865)
#49 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5691)
#50 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4539)
#51 Element.updateChild (package:flutter/src/widgets/framework.dart:4004)
#52 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#53 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#54 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5697)
#55 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5691)
#56 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4539)
#57 Element.updateChild (package:flutter/src/widgets/framework.dart:3998)
#58 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7015)
#59 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#60 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7015)
#61 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#62 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#63 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#64 ProxyElement.update (package:flutter/src/widgets/framework.dart:6041)
#65 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#66 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#67 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#68 StatelessElement.update (package:flutter/src/widgets/framework.dart:5787)
#69 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#70 Element.updateChildren (package:flutter/src/widgets/framework.dart:4140)
#71 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7192)
#72 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#73 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#74 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#75 StatelessElement.update (package:flutter/src/widgets/framework.dart:5787)
#76 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#77 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#78 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5874)
#79 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#80 StatefulElement.update (package:flutter/src/widgets/framework.dart:5899)
#81 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#82 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7015)
#83 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#84 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#85 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5874)
#86 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#87 StatefulElement.update (package:flutter/src/widgets/framework.dart:5899)
#88 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#89 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#90 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#91 ProxyElement.update (package:flutter/src/widgets/framework.dart:6041)
#92 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#93 Element.updateChildren (package:flutter/src/widgets/framework.dart:4140)
#94 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7192)
#95 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#96 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#97 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5874)
#98 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#99 StatefulElement.update (package:flutter/src/widgets/framework.dart:5899)
#100 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#101 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#102 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#103 StatelessElement.update (package:flutter/src/widgets/framework.dart:5787)
#104 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#105 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#106 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#107 ProxyElement.update (package:flutter/src/widgets/framework.dart:6041)
#108 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#109 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#110 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#111 ProxyElement.update (package:flutter/src/widgets/framework.dart:6041)
#112 Element.updateChild (package:flutter/src/widgets/framework.dart:3982)
#113 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5738)
#114 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5874)
#115 Element.rebuild (package:flutter/src/widgets/framework.dart:5427)
#116 BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2694)
#117 BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2752)
#118 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3056)
#119 _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:272)
#120 RenderAbstractLayoutBuilderMixin.layoutCallback (package:flutter/src/widgets/layout_builder.dart:335)
#121 RenderObjectWithLayoutCallbackMixin.runLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:4209)
#122 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2941)
#123 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1209)
#124 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2940)
#125 RenderObjectWithLayoutCallbackMixin.runLayoutCallback (package:flutter/src/rendering/object.dart:4209)
#126 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:449)
#127 RenderObject.layout (package:flutter/src/rendering/object.dart:2822)
#128 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:180)
#129 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1118)
#130 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:249)
#131 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:419)
#132 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2655)
#133 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1160)
#134 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1173)
#135 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:629)
#136 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1242)
#137 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:495)
#138 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1438)
#139 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1351)
#140 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1204)
#141 _invoke (dart:ui/hooks.dart:331)
#142 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:444)
#143 _drawFrame (dart:ui/hooks.dart:303)
]Platform
iOS, Linux, Macos, Web
App Version
v0.7.0
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
