Skip to content
This repository was archived by the owner on Dec 24, 2025. It is now read-only.

Commit f7476db

Browse files
committed
fixed to new API
1 parent 8fdc32f commit f7476db

File tree

4 files changed

+92
-133
lines changed

4 files changed

+92
-133
lines changed

.graphqlconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"extensions": {
55
"endpoints": {
66
"Default GraphQL Endpoint": {
7-
"url": "http://127.0.0.1:5000/graphql",
7+
"url": "https://osu-pulse.site/graphql",
88
"headers": {
99
"user-agent": "JS GraphQL"
1010
},

schema.gql

Lines changed: 73 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,137 +1,125 @@
11
# This file was generated based on ".graphqlconfig". Do not edit manually.
22

33
schema {
4-
query: Query
5-
mutation: Mutation
6-
subscription: Subscription
4+
query: Query
5+
mutation: Mutation
6+
subscription: Subscription
77
}
88

99
type DeviceInfoObject {
10-
client: String!
11-
device: String!
12-
type: DeviceType!
10+
client: String!
11+
device: String!
12+
type: DeviceType!
1313
}
1414

1515
type DeviceObject {
16-
id: ID!
17-
info: DeviceInfoObject!
18-
status: DeviceStatusObject!
19-
userId: String!
16+
id: ID!
17+
info: DeviceInfoObject!
18+
status: DeviceStatusObject!
19+
userId: String!
2020
}
2121

2222
type DeviceStatusObject {
23-
playing: Boolean
24-
progress: Float
25-
trackId: String
26-
volume: Float
23+
playing: Boolean
24+
progress: Float
25+
trackId: String
26+
volume: Float
2727
}
2828

2929
type Mutation {
30-
addMyTrack(trackId: String!): TrackObject!
31-
addPlaylistTrack(playlistId: String!, trackId: String!): TrackObject!
32-
cacheTrack(trackId: String!): TrackObject!
33-
cancelCacheTrack(trackId: String!): TrackObject!
34-
copyPlaylist(playlistId: String!): PlaylistObject!
35-
createMyPlaylist(payload: CreatePlaylistInput!): PlaylistObject!
36-
deleteMyPlaylist(playlistId: String!): PlaylistObject!
37-
moveMyTrack(position: Float!, trackId: String!): TrackObject!
38-
movePlaylistTrack(
39-
playlistId: String!
40-
position: Float!
41-
trackId: String!
42-
): TrackObject!
43-
removeMyTrack(trackId: String!): TrackObject!
44-
removePlaylistTrack(playlistId: String!, trackId: String!): TrackObject!
45-
updateMyPlaylist(
46-
payload: UpdatePlaylistInput!
47-
playlistId: String!
48-
): PlaylistObject!
30+
addMyTrack(trackId: String!): TrackObject!
31+
addPlaylistTrack(playlistId: String!, trackId: String!): TrackObject!
32+
cacheTrack(trackId: String!): TrackObject!
33+
cancelCacheTrack(trackId: String!): TrackObject!
34+
copyPlaylist(playlistId: String!): PlaylistObject!
35+
createMyPlaylist(payload: CreatePlaylistInput!): PlaylistObject!
36+
deleteMyPlaylist(playlistId: String!): PlaylistObject!
37+
moveMyTrack(position: Float!, trackId: String!): TrackObject!
38+
movePlaylistTrack(playlistId: String!, position: Float!, trackId: String!): TrackObject!
39+
removeMyTrack(trackId: String!): TrackObject!
40+
removePlaylistTrack(playlistId: String!, trackId: String!): TrackObject!
41+
updateMyPlaylist(payload: UpdatePlaylistInput!, playlistId: String!): PlaylistObject!
4942
}
5043

5144
type PlaylistObject {
52-
cover: String
53-
id: ID!
54-
public: String!
55-
title: String!
56-
trackIds: [String!]!
57-
tracks(cursor: String, limit: Float = 50.0): TracksWithCursorObject!
58-
userId: String!
45+
cover: String
46+
id: ID!
47+
public: String!
48+
title: String!
49+
trackIds: [String!]!
50+
tracks(cursor: String, limit: Float = 50.0): TracksWithCursorObject!
51+
userId: String!
5952
}
6053

6154
type Query {
62-
devices: [DeviceObject!]!
63-
me: UserObject!
64-
myPlaylist(playlistId: String!): PlaylistObject!
65-
myPlaylists(search: String): [PlaylistObject!]!
66-
myTracks(cursor: String, limit: Float = 50.0): TracksWithCursorObject!
67-
playlistTracks(
68-
cursor: String
69-
limit: Float = 50.0
70-
playlistId: String!
71-
): TracksWithCursorObject!
72-
publicPlaylist(playlistId: String!): PlaylistObject!
73-
publicPlaylists(search: String): [PlaylistObject!]!
74-
track(trackId: String!): TrackObject!
75-
tracks(cursor: String, search: String): TracksWithCursorObject!
55+
devices: [DeviceObject!]!
56+
me: UserObject!
57+
myPlaylist(playlistId: String!): PlaylistObject!
58+
myPlaylists(search: String): [PlaylistObject!]!
59+
myTracks(cursor: String, limit: Float = 50.0): TracksWithCursorObject!
60+
playlistTracks(cursor: String, limit: Float = 50.0, playlistId: String!): TracksWithCursorObject!
61+
publicPlaylist(playlistId: String!): PlaylistObject!
62+
publicPlaylists(search: String): [PlaylistObject!]!
63+
track(trackId: String!): TrackObject!
64+
tracks(cursor: String, search: String): TracksWithCursorObject!
7665
}
7766

7867
type Subscription {
79-
deviceStatusUpdated: DeviceObject!
68+
deviceStatusUpdated: DeviceObject!
8069
}
8170

8271
type TrackCoverObject {
83-
normal: String!
84-
small: String!
85-
wide: String!
72+
normal: String!
73+
small: String!
74+
wide: String!
8675
}
8776

8877
type TrackObject {
89-
artist: String!
90-
cached: Boolean!
91-
cover: TrackCoverObject!
92-
duration: Float!
93-
id: ID!
94-
liked: Float!
95-
played: Float!
96-
title: String!
97-
url: TrackUrlObject!
78+
artist: String!
79+
cover: TrackCoverObject!
80+
duration: Float!
81+
id: ID!
82+
liked: Float!
83+
played: Float!
84+
title: String!
85+
url: TrackUrlObject!
9886
}
9987

10088
type TrackUrlObject {
101-
audio: String
102-
file: String!
103-
page: String!
89+
audio: String
90+
file: String!
91+
page: String!
10492
}
10593

10694
type TracksWithCursorObject {
107-
cursor: String
108-
data: [TrackObject!]!
95+
cursor: String
96+
data: [TrackObject!]!
10997
}
11098

11199
type UserObject {
112-
id: ID!
113-
url: UserUrlObject!
114-
username: String!
100+
id: ID!
101+
url: UserUrlObject!
102+
username: String!
115103
}
116104

117105
type UserUrlObject {
118-
avatar: String!
119-
cover: String!
120-
profile: String!
106+
avatar: String!
107+
cover: String!
108+
profile: String!
121109
}
122110

123111
enum DeviceType {
124-
DESKTOP
125-
MOBILE
126-
OTHER
112+
DESKTOP
113+
MOBILE
114+
OTHER
127115
}
128116

129117
input CreatePlaylistInput {
130-
public: String!
131-
title: String!
118+
public: String!
119+
title: String!
132120
}
133121

134122
input UpdatePlaylistInput {
135-
public: String
136-
title: String
123+
public: String
124+
title: String
137125
}

src/player/stores/player.ts

Lines changed: 17 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ const usePlayerState = createGlobalState(() => ({
1818
progress: useLocalStorage<number>('player_progress', 0, { serializer, writeDefaults: true }),
1919
buffer: ref(0),
2020
duration: useLocalStorage<number>('player_duration', 0, { serializer, writeDefaults: true }),
21-
volume: useLocalStorage('player_volume', 1, { serializer, writeDefaults: true }),
22-
muted: useLocalStorage('player_muted', false, { serializer, writeDefaults: true }),
21+
volume: useLocalStorage<number>('player_volume', 1, { serializer, writeDefaults: true }),
22+
muted: useLocalStorage<boolean>('player_muted', false, { serializer, writeDefaults: true }),
2323
ended: ref(false),
2424
}))
2525

@@ -42,17 +42,14 @@ export const usePlayer = createSharedComposable(() => {
4242
const tracksService = useTracksService()
4343
const { mutate: mutateCacheTrack } = tracksService.cacheTrack()
4444
async function cacheTrack(trackId: string) {
45-
if (currentTrack.value && !currentTrack.value.cached) {
45+
if (currentTrack.value && !currentTrack.value.url.audio) {
4646
caching.value = true
4747

4848
try {
4949
const result = await mutateCacheTrack({ trackId })
5050
const cachedTrack = result?.data?.cacheTrack
5151

52-
if (
53-
cachedTrack
54-
&& (!currentTrack || trackId === currentTrack.value?.id)
55-
)
52+
if (cachedTrack && (!currentTrack || trackId === currentTrack.value?.id))
5653
caching.value = false
5754
}
5855
catch {}
@@ -74,70 +71,46 @@ export const usePlayer = createSharedComposable(() => {
7471
cancelCacheTrack(currentTrack.value.id)
7572
}
7673
else {
77-
if (currentTrack.value?.cached)
74+
if (currentTrack.value?.url?.audio)
7875
audio.value.play().catch(() => {})
7976
else void cacheTrack(currentTrack.value.id)
8077
}
8178
}
8279
},
8380
{ immediate: true },
8481
)
85-
const { ignoreUpdates: ignoreProgressUpdates } = watchIgnorable(
86-
progress,
87-
value => (audio.value.currentTime = value),
88-
{ immediate: true },
89-
)
90-
const { ignoreUpdates: ignoreVolumeUpdates } = watchIgnorable(
91-
volume,
92-
value => (audio.value.volume = value),
93-
{ immediate: true },
94-
)
95-
const { ignoreUpdates: ignoreMuteUpdates } = watchIgnorable(
96-
muted,
97-
value => (audio.value.muted = value),
98-
{ immediate: true },
99-
)
82+
const { ignoreUpdates: ignoreProgressUpdates } = watchIgnorable(progress, value => (audio.value.currentTime = value), { immediate: true })
83+
const { ignoreUpdates: ignoreVolumeUpdates } = watchIgnorable(volume, value => (audio.value.volume = value), { immediate: true })
84+
const { ignoreUpdates: ignoreMuteUpdates } = watchIgnorable(muted, value => (audio.value.muted = value), { immediate: true })
10085

10186
useEventListener(audio, 'canplay', () => {
10287
if (playing.value)
10388
audio.value.play().catch(() => {})
10489
})
105-
useEventListener(audio, 'play', () =>
106-
ignorePlayingUpdates(() => (playing.value = true)),
107-
)
90+
useEventListener(audio, 'play', () => ignorePlayingUpdates(() => (playing.value = true)))
10891
useEventListener(audio, 'pause', () => {
10992
if (audio.value.currentTime !== audio.value.duration)
11093
ignorePlayingUpdates(() => (playing.value = false))
11194
})
112-
useEventListener(audio, 'timeupdate', () =>
113-
ignoreProgressUpdates(() => (progress.value = audio.value.currentTime)),
114-
)
115-
useEventListener(
116-
audio,
117-
'progress',
118-
() => (buffer.value = calcBuffer(audio.value.buffered, progress.value)),
119-
)
120-
useEventListener(audio, 'volumechange', () =>
121-
ignoreVolumeUpdates(() =>
122-
ignoreMuteUpdates(() => {
123-
volume.value = audio.value.volume
124-
muted.value = audio.value.muted
125-
}),
126-
),
127-
)
95+
useEventListener(audio, 'timeupdate', () => ignoreProgressUpdates(() => (progress.value = audio.value.currentTime)))
96+
useEventListener(audio, 'durationchange', () => (duration.value = audio.value.duration))
97+
useEventListener(audio, 'progress', () => (buffer.value = calcBuffer(audio.value.buffered, progress.value)))
98+
useEventListener(audio, 'volumechange', () => ignoreVolumeUpdates(() => ignoreMuteUpdates(() => {
99+
volume.value = audio.value.volume
100+
muted.value = audio.value.muted
101+
})))
128102
useEventListener(audio, 'ended', () => (ended.value = true))
129103
useEventListener(audio, 'playing', () => (ended.value = false))
130104

131105
watch(currentTrack, (value, oldValue) => {
132106
ignoreProgressUpdates(() => (progress.value = 0))
133-
duration.value = value?.duration ?? 0
134107

135108
if (caching.value && oldValue)
136109
cancelCacheTrack(oldValue.id)
137110

138111
audio.value.src = value?.url?.audio ?? ''
139112
audio.value.load()
140-
if (value && !value.cached && playing.value)
113+
if (value && !value.url.audio && playing.value)
141114
void cacheTrack(value.id)
142115
})
143116

src/shared/dto/track.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ export interface Track {
88
id: string
99
title: string
1010
artist: string
11-
cached: boolean
12-
duration?: number
11+
duration: number
1312
cover: TrackCover
1413
url: TrackUrl
1514
}
@@ -19,7 +18,6 @@ export const TRACK = gql`
1918
id
2019
title
2120
artist
22-
cached
2321
duration
2422
cover {
2523
...TrackCover

0 commit comments

Comments
 (0)