spotube icon indicating copy to clipboard operation
spotube copied to clipboard

[Bug] Local file breakes playlists

Open Protonosgit opened this issue 1 year ago • 6 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

Playlist stops rendering after a local file was added. Also affects public playlists from other users.

Expected Behavior

The playlist shows as usual but without local files

Steps To Reproduce

  1. First open Spotify
  2. Create playlist
  3. Add some songs for comparison
  4. Enable show local files in settings
  5. Select a song from the local playlist
  6. Click add to playlist and select the playlist from above
  7. Add one or more songs from spotify servers
  8. Go back to Spotube and open the playlist

-> The local file in the playlist will stop the rest of the playlist from rendering correctly (shows white space) -> Public Playlist are also affected if they contain local files

Spotube Version

2.7.0

Operating System

Android

Linux Distribution (if applicable)

No response

Operating System Version

Android 13

Installation Source

Official Website (spotube.netlify.app)

Additional information

Simply removing listed local files from the playlist would fix the issue

Protonosgit avatar Mar 08 '23 20:03 Protonosgit

How are u adding local tracks to the playlist? Spotube doesn't allow that Can u share a screenshot?

KRTirtho avatar Mar 09 '23 01:03 KRTirtho

You can add local tracks in Spotify as mentioned above. These playlists with local tracks can also be played on Spotube. Screenshot_20230309_094032_Spotify

Protonosgit avatar Mar 09 '23 13:03 Protonosgit

ListView stops rendering after local track Screenshot_20230309_144533

Protonosgit avatar Mar 09 '23 13:03 Protonosgit

This is probably related to something else. Your local tracks stays on your device and Spotify doesn't keep any track of that in server so it shouldn't show up in Spotube or in Spotify running in different devices

KRTirtho avatar Mar 09 '23 14:03 KRTirtho

The tracks are listed on the servers but they can not be played on other devices!

Protonosgit avatar Mar 09 '23 14:03 Protonosgit

I was gonna report this same issue until I saw it had already been reported. It could be because of the local file track in the playlist not having an album cover (if I'm reading the logs correctly). Alternatively it could be because the local file for the song has been deleted on the host device, because that's at least the case for me. I no longer have the file on my computer, but only have the song in the playlist still to remember the name.

Here are some logs
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber: 
packageName: spotube
---------- ERROR ----------
PathNotFoundException: Cannot retrieve length of file, path = 'imageUrl' (OS Error: The system cannot find the file specified.
, errno 
------------ STACK TRACE ---#0   #0      _checkForErrorResponse (dart:io/common.dart:55)
#1      _File.length.<anonymous closure> (dart:io/file_impl.dart:389)
<asynchronous suspension>
#2      FileImage._loadAsync (package:flutter/src/painting/image_provider.dart:1484)
<asynchronous suspension>
#3      MultiFrameImageStreamCompleter._handleCodecReady (package:flutter/src/painting/image_stream.dart:985)
<asynchronous suspensi------------ CUSTOM INFO ---
=====
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber: 
packageName: spotube
---------- ERROR ----------
No track currently
------- STACK TRACE -------
#0      LyricsQueries.spotifySynced.<anonymous closure> (package:spotube/services/queries/lyrics.dart:71)
#1      useSpotifyQuery.<anonymous closure> (package:spotube/hooks/spotify/use_spotify_query.dart:30)
#2      new Future.delayed.<anonymous closure> (dart:async/future.dart:422)
#3      TickerFuture.whenCompleteOrCancel.thunk (package:flutter/src/scheduler/ticker.dart:435)
#4      _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398)
#5      _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429)
#6      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184)
------- CUSTOM INFO -------
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber: 
packageName: spotube
---------- ERROR ----------
Null check operator used on a null value
------- STACK TRACE -------
#0      TrackViewBodySection.build.<anonymous closure> (package:spotube/components/shared/tracks_view/sections/body/track_view_body.dart:110)
#1      _SliverInfiniteListState.build.<anonymous closure> (package:very_good_infinite_list/src/sliver_infinite_list.dart:174)
#2      SliverChildBuilderDelegate.build (package:flutter/src/widgets/scroll_delegate.dart:490)
#3      SliverMultiBoxAdaptorElement._build (package:flutter/src/widgets/sliver.dart:829)
#4      SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:843)
#5      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2844)
#6      SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:835)
#7      RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:349)
#8      RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2686)
#9      PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1097)
#10     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2686)
#11     RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:338)
#12     RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:486)
#13     RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:239)
#14     RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:281)
#15     RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#16     RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:139)
#17     RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:361)
#18     RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#19     RenderSliverMainAxisGroup.performLayout (package:flutter/src/rendering/sliver_group.dart:238)
#20     RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#21     RenderProxySliver.performLayout (package:flutter/src/rendering/proxy_sliver.dart:54)
#22     RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#23     RenderSliverStack.performLayout (package:sliver_tools/src/rendering/sliver_stack.dart:189)
#24     RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#25     RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:601)
#26     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1555)
#27     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1464)
#28     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2414)
#29     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1051)
#30     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1064)
#31     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:582)
#32     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:991)
#33     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:448)
#34     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1386)
#35     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1311)
#36     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1169)
#37     _invoke (dart:ui/hooks.dart:312)
#38     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:399)
#39     _drawFrame (dart:ui/hooks.dart:283)
------- CUSTOM INFO -------
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber: 
packageName: spotube
---------- ERROR ----------
Null check operator used on a null value
------- STACK TRACE -------
#0      BlackListNotifier.contains (package:spotube/provider/blacklist_provider.dart:61)
#1      IterableExtension.whereNot.<anonymous closure> (package:collection/src/iterable_extensions.dart:54)
#2      WhereIterator.moveNext (dart:_internal/iterable.dart:451)
#3      new _GrowableList._ofOther (dart:core-patch/growable_array.dart:202)
#4      new _GrowableList.of (dart:core-patch/growable_array.dart:152)
#5      new List.of (dart:core-patch/array_patch.dart:39)
#6      Iterable.toList (dart:core/iterable.dart:497)
#7      BlackListNotifier.filter (package:spotube/provider/blacklist_provider.dart:75)
#8      ProxyPlaylistNotifier.load (package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart:318)
#9      TrackViewBodySection.build.<anonymous closure>.<anonymous closure> (package:spotube/components/shared/tracks_view/sections/body/track_view_body.dart:132)
<asynchronous suspension>
#10     TrackTile.build.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:spotube/components/shared/track_tile/track_tile.dart:93)
<asynchronous suspension>
------- CUSTOM INFO -------

MrDemocracy avatar Mar 31 '24 22:03 MrDemocracy