Code Monkey home page Code Monkey logo

sloooop's People

Contributors

abdulazizali77 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

bronius

sloooop's Issues

BUG: Unable to make on different machine

node_modules/.bin/browserify -t babelify -d src/background/index.js > build/background.bundle.js
internal/modules/cjs/loader.js:605
    throw err;
    ^

Error: Cannot find module 'babel-core'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:603:15)
    at Function.Module._load (internal/modules/cjs/loader.js:529:25)
    at Module.require (internal/modules/cjs/loader.js:657:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (D:\sloop\node_modules\babelify\index.js:2:14)
    at Module._compile (internal/modules/cjs/loader.js:721:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
make: *** [Makefile:35: build/background.bundle.js] Error 1

When the user is not logged in and enables the extension, sometimes extension setup fails

When the use is not logged in, the auth flow will forward to a login page first
before the client authorization.
chrome-extension://coidlglmibkdkmnedmgblamammmnjdon/contentscript.bundle.js:27664 Uncaught (in promise) TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'. at observePlaybackPosition (chrome-extension://coidlglmibkdkmnedmgblamammmnjdon/contentscript.bundle.js:27664) at setupObservers (chrome-extension://coidlglmibkdkmnedmgblamammmnjdon/contentscript.bundle.js:27676) at chrome-extension://coidlglmibkdkmnedmgblamammmnjdon/contentscript.bundle.js:27973

BUG: Player skips tracks successively

There might be a condition where the last position of the current track was saved even when no ranges were set. And when the web player goes through each track, it jumps to that last position.
seeking to 54000 bearertoken=BQDfRDRLBqLiP5Ek1sS-kuRYuaijT8OGjyJWEhkBmcHHzuFZcoVUFUagEs8Z9o2jCDiSv9c_1IzvP5OD0UZM52iYhIV8uTPVDr2CGVm6pF-wESAatvI4l7muyB5Ptsly70fhNv_xpHyZRpwAqDacm0oIYNkLhAmuyUsqIflOe5WpB2P4yB_g3snqBrJ1 index.js:449 Response {type: "cors", url: "https://api.spotify.com/v1/me/player/seek?position_ms=54000", redirected: false, status: 204, ok: true, …}body: (...)bodyUsed: falseheaders: Headers {}ok: trueredirected: falsestatus: 204statusText: ""type: "cors"url: "https://api.spotify.com/v1/me/player/seek?position_ms=54000"__proto__: Response spotifyPlayer.js:58

Race conditions: Certain log in use cases intermittently cause the extension to fail initialization

  • Use Case 15 - Log in. Enable extension. Play. Disable extension. Click logout. Enable extension (without logging in)
  • Use Case 39 - Tab2 icon is still active whereas Tab1 icon is inactive
  • Use Case 40 - Tab1 overwrites Tab2 ranges
  • Use Case 41-51 - Tab1 state becomes incorrect (active)
  • Use Case 52 - Tab2 fails to go through auth flow, fails to setup slider but is recoverable; Tab1 state becomes unavailable

Use Cases

1 | One tab, logs in, plays track, enables extension, disables extension, logs out
2 | One tab, logs in, enables extension, plays track, disables extension, logs out
3 | One tab, logs in, plays track, enables extension, logs out
4 | One tab, logs in, enables extension, plays track, logs out
5 | One tab, logs in, plays track, enables extension, disables extension, closes tab
6 | One tab, logs in, enables extension, plays track, disables extension, closes tab
7 | One tab, logs in, plays track, enables extension, closes tab
8 | One tab, logs in, enables extension, plays track, closes tab
9 | One tab, is logged out, enables extension, plays track, disables extension, logs out
10 | One tab, is logged out, enables extension, plays track, logs out
11 | One tab, is logged out, enables extension, plays track, disables extension, closes tab
12 | One tab, is logged out, enables extension, plays track, closes tab
13 | One tab, logs in, plays track, enables extension, disables extension, logs out,  logs in again, plays track, enables extension
14 | One tab, logs in, plays track, enables extension, disables extension, logs out,  logs in again, enables extension, plays track
15 | One tab,  logs in, plays track, enables extension, disables extension, logs out, enables extension, plays track
16 | One tab,  logs in, plays track, enables extension, logs out, logs in again, plays track, enables extension
17 | One tab,  logs in, plays track, enables extension, logs out, logs in again, enables extension, plays track
18 | One tab,  logs in, plays track, enables extension, logs out, enables extension, plays track
19 | One tab,  logs in, plays track, enables extension, disables extension, closes tab logs in again, plays track, enables extension
20 | One tab,  logs in, plays track, enables extension, disables extension, closes tab logs in again, enables extension, plays track
21 | One tab,  logs in, plays track, enables extension, disables extension, closes tab enables extension, plays track
22 | One tab,  logs in, plays track, enables extension, closes tab logs in again, plays track, enables extension
23 | One tab,  logs in, plays track, enables extension, closes tab logs in again, enables extension, plays track
24 | One tab,  logs in, plays track, enables extension, closes tab enables extension, plays track
25 | One tab,  is logged out, enables extension, plays track, disables extension, logs out logs in again, plays track, enables extension
26 | One tab,  is logged out, enables extension, plays track, disables extension, logs out logs in again, enables extension, plays track
27 | One tab,  is logged out, enables extension, plays track, disables extension, logs out enables extension, plays track
28 | One tab,  is logged out, enables extension, plays track, logs out, logs in again, plays track, enables extension
29 | One tab,  is logged out, enables extension, plays track, logs out, logs in again, enables extension, plays track
30 | One tab,  is logged out, enables extension, plays track, logs out, enables extension, plays track
31 | One tab,  is logged out, enables extension, plays track, disables extension, closes tab, logs in again, plays track, enables extension
32 | One tab,  is logged out, enables extension, plays track, disables extension, closes tab, logs in again, enables extension, plays track
33 | One tab,  is logged out, enables extension, plays track, disables extension, closes tab, enables extension, plays track
34 | One tab,  is logged out, enables extension, plays track, closes tab, logs in again, plays track, enables extension
35 | One tab,  is logged out, enables extension, plays track, closes tab, logs in again, enables extension, plays track
36 | One tab,  is logged out, enables extension, plays track, closes tab, enables extension, plays track

37 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension, closes tab; Tab 2 plays track, enables extension
38 | Two tabs; Tab 1 logs in, plays track, enables extension, closes tab; Tab 2 plays track, enables extension
39 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension, closes tab; Tab 2 plays track, enables extension Tab 1 enables extension, plays track
40 | Two tabs; Tab 1 logs in, plays track, enables extension, closes tab; Tab 2 plays track, enables extension Tab 1 enables extension, plays track
 
41 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension; Tab 2 logs out; Tab 1 logs in again, plays track, enables extension
42 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension; Tab 2 logs out; Tab 1 logs in again, enables extension, plays track
43 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension; Tab 2 logs out; Tab 1 enables extension, plays track
44 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension; Tab 2 logs out; Tab 2 logs in again, plays track, enables extension
45 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension; Tab 2 logs out; Tab 2 logs in again, enables extension, plays track
46 | Two tabs; Tab 1 logs in, plays track, enables extension, disables extension; Tab 2 logs out; Tab 2 enables extension, plays track
47 | Two tabs; Tab 1 logs in, plays track, enables extension; Tab 2 logs out Tab 1 logs in again, plays track, enables extension
48 | Two tabs; Tab 1 logs in, plays track, enables extension; Tab 2 logs out Tab 1 logs in again, enables extension, plays track
49 | Two tabs; Tab 1 logs in, plays track, enables extension; Tab 2 logs out Tab 1 enables extension, plays track
50 | Two tabs; Tab 1 logs in, plays track, enables extension; Tab 2 logs out Tab 2 logs in again, plays track, enables extension
51 | Two tabs; Tab 1 logs in, plays track, enables extension; Tab 2 logs out Tab 2 logs in again, enables extension, plays track
52 | Two tabs; Tab 1 logs in, plays track, enables extension; Tab 2 logs out Tab 2 enables extension, plays track

UI: Add proper icon

There should be three icons
UNAVAILABLE_ICON
INACTIVATED_ICON
ACTIVATED_ICON

Add support for Podcasts

podcast = {
    "device": {
    "id": "1fe41362635180b15a5327ca418baca7401de41b",
        "is_active": true,
        "is_private_session": false,
        "is_restricted": false,
        "name": "Web Player (Chrome)",
        "type": "Computer",
        "volume_percent": 100
},
    "shuffle_state": false,
    "repeat_state": "off",
    "timestamp": 1602989985376,
    "context": null,
    "progress_ms": 337030,
    "item": null,
    "currently_playing_type": "episode",
    "actions": {
    "disallows": {
        "resuming": true,
            "skipping_prev": true
    }
},
    "is_playing": true
}

BUG: Player seeks even when range is invalid

For https://open.spotify.com/album/7FBx85QTyuFgl2TpjroShR
Track1 Punk Rock is 2:08
Track2 Cody is 6:33

  1. Set range of Track1 to default
  2. Set range of Track2 to 2:10 and 3:00
  3. Click play on Track2
  4. Click play on Track1
    Its observed that it seeks to the minimum of Track2 which is 2:10, and because 2:10 is more than the length of Track1, it returns 204 and then jumps to Track2

Basically the last spurious seek on Track2 before playing Track1 shouldnt even be made.

Possibly #22 is a manifest of this

Feature: Add 'Filter' mode as alternative to loop mode

A 'Filter' mode is similar to the normal AB 'Loop' mode in that it will start playback from A and plays until B, but the 'Filter' mode will not go back to A as in the 'Loop' mode and instead go straight to the next track.

UI : Extension icon does not indicate whether it is activated, inactivated or unavailable

For urls which the extension does not support, the icon should display an 'UNAVAILABLE_ICON'
For urls which the extension does support, and the extension is not activated or disabled the icon should display an 'INACTIVATED_ICON'
For urls which the extension does support, and the extension is activated or enabled the icon should display an 'ACTIVATED_ICON'

In an unavailable state, clicking the extension icon does nothing, it will display the default chrome settings context menu.
In an inactivated state, clicking the extension icon activates the extension, optionally goes through auth flow, and displays slider.
In an activated state, clicking the extension icon inactivates the extension. The fetched bearer is retained.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.