Demo using Slices Network GraphQL Relay API to make a teal.fm client

fix artists field

+1 -1
package.json
··· 8 8 "build": "tsc -b && vite build", 9 9 "lint": "eslint .", 10 10 "preview": "vite preview", 11 - "schema:dev": "npx get-graphql-schema 'http://localhost:8000/graphql' > schema.graphql", 11 + "schema:dev": "npx get-graphql-schema 'http://localhost:8080/graphql' > schema.graphql", 12 12 "schema:prod": "npx get-graphql-schema 'https://quickslice-production-d668.up.railway.app/graphql' > schema.graphql" 13 13 }, 14 14 "dependencies": {
+61 -52
schema.graphql
··· 416 416 uri: String 417 417 } 418 418 419 + """Object type from lexicon definition""" 420 + type FmTealAlphaFeedDefsArtist { 421 + """Field from object definition""" 422 + artistMbId: String 423 + 424 + """Field from object definition""" 425 + artistName: String! 426 + } 427 + 419 428 """Record type: fm.teal.alpha.feed.play""" 420 429 type FmTealAlphaFeedPlay { 421 430 """Record URI""" ··· 437 446 actorHandle: String 438 447 439 448 """Field from lexicon""" 440 - artistMbIds: String 449 + artistMbIds: [String!] 441 450 442 451 """Field from lexicon""" 443 - artistNames: String 452 + artistNames: [String!] 444 453 445 454 """Field from lexicon""" 446 - artists: String 455 + artists: [FmTealAlphaFeedDefsArtist!] 447 456 448 457 """Field from lexicon""" 449 458 duration: Int ··· 886 895 mimeType: String! 887 896 ): BlobUploadResponse! 888 897 889 - """Create a new fm.teal.alpha.feed.play record""" 890 - createFmTealAlphaFeedPlay( 898 + """Create a new app.bsky.actor.profile record""" 899 + createAppBskyActorProfile( 891 900 """Record data""" 892 - input: FmTealAlphaFeedPlayInput! 901 + input: AppBskyActorProfileInput! 893 902 894 903 """Optional record key (defaults to TID)""" 895 904 rkey: String 896 - ): FmTealAlphaFeedPlay 905 + ): AppBskyActorProfile 897 906 898 - """Update an existing fm.teal.alpha.feed.play record""" 899 - updateFmTealAlphaFeedPlay( 907 + """Update an existing app.bsky.actor.profile record""" 908 + updateAppBskyActorProfile( 900 909 """Record key to update""" 901 910 rkey: String! 902 911 903 912 """Updated record data""" 904 - input: FmTealAlphaFeedPlayInput! 905 - ): FmTealAlphaFeedPlay 913 + input: AppBskyActorProfileInput! 914 + ): AppBskyActorProfile 906 915 907 - """Delete a fm.teal.alpha.feed.play record""" 908 - deleteFmTealAlphaFeedPlay( 916 + """Delete a app.bsky.actor.profile record""" 917 + deleteAppBskyActorProfile( 909 918 """Record key to delete""" 910 919 rkey: String! 911 920 ): DeleteResult 912 921 913 - """Create a new app.bsky.actor.profile record""" 914 - createAppBskyActorProfile( 922 + """Create a new fm.teal.alpha.feed.play record""" 923 + createFmTealAlphaFeedPlay( 915 924 """Record data""" 916 - input: AppBskyActorProfileInput! 925 + input: FmTealAlphaFeedPlayInput! 917 926 918 927 """Optional record key (defaults to TID)""" 919 928 rkey: String 920 - ): AppBskyActorProfile 929 + ): FmTealAlphaFeedPlay 921 930 922 - """Update an existing app.bsky.actor.profile record""" 923 - updateAppBskyActorProfile( 931 + """Update an existing fm.teal.alpha.feed.play record""" 932 + updateFmTealAlphaFeedPlay( 924 933 """Record key to update""" 925 934 rkey: String! 926 935 927 936 """Updated record data""" 928 - input: AppBskyActorProfileInput! 929 - ): AppBskyActorProfile 937 + input: FmTealAlphaFeedPlayInput! 938 + ): FmTealAlphaFeedPlay 930 939 931 - """Delete a app.bsky.actor.profile record""" 932 - deleteAppBskyActorProfile( 940 + """Delete a fm.teal.alpha.feed.play record""" 941 + deleteFmTealAlphaFeedPlay( 933 942 """Record key to delete""" 934 943 rkey: String! 935 944 ): DeleteResult ··· 952 961 953 962 """Root query type""" 954 963 type Query { 955 - """Query fm.teal.alpha.feed.play with cursor pagination and sorting""" 956 - fmTealAlphaFeedPlay( 964 + """Query app.bsky.actor.profile with cursor pagination and sorting""" 965 + appBskyActorProfile( 957 966 """Returns the first n items from the list""" 958 967 first: Int 959 968 ··· 967 976 before: String 968 977 969 978 """Sort order for the connection""" 970 - sortBy: [FmTealAlphaFeedPlaySortFieldInput!] 979 + sortBy: [AppBskyActorProfileSortFieldInput!] 971 980 972 981 """Filter conditions for the query""" 973 - where: FmTealAlphaFeedPlayWhereInput 974 - ): FmTealAlphaFeedPlayConnection 982 + where: AppBskyActorProfileWhereInput 983 + ): AppBskyActorProfileConnection 975 984 976 - """Query app.bsky.actor.profile with cursor pagination and sorting""" 977 - appBskyActorProfile( 985 + """Query fm.teal.alpha.feed.play with cursor pagination and sorting""" 986 + fmTealAlphaFeedPlay( 978 987 """Returns the first n items from the list""" 979 988 first: Int 980 989 ··· 988 997 before: String 989 998 990 999 """Sort order for the connection""" 991 - sortBy: [AppBskyActorProfileSortFieldInput!] 1000 + sortBy: [FmTealAlphaFeedPlaySortFieldInput!] 992 1001 993 1002 """Filter conditions for the query""" 994 - where: AppBskyActorProfileWhereInput 995 - ): AppBskyActorProfileConnection 1003 + where: FmTealAlphaFeedPlayWhereInput 1004 + ): FmTealAlphaFeedPlayConnection 996 1005 997 - """Aggregated query for fm.teal.alpha.feed.play""" 998 - fmTealAlphaFeedPlayAggregated( 1006 + """Aggregated query for app.bsky.actor.profile""" 1007 + appBskyActorProfileAggregated( 999 1008 """Fields to group by (required)""" 1000 - groupBy: [FmTealAlphaFeedPlayGroupByFieldInput!] 1009 + groupBy: [AppBskyActorProfileGroupByFieldInput!] 1001 1010 1002 1011 """Filter records before aggregation""" 1003 - where: FmTealAlphaFeedPlayWhereInput 1012 + where: AppBskyActorProfileWhereInput 1004 1013 1005 1014 """Order by count (default: desc)""" 1006 1015 orderBy: AggregationOrderBy 1007 1016 1008 1017 """Maximum number of results (default 50, max 1000)""" 1009 1018 limit: Int 1010 - ): [FmTealAlphaFeedPlayAggregated!] 1019 + ): [AppBskyActorProfileAggregated!] 1011 1020 1012 - """Aggregated query for app.bsky.actor.profile""" 1013 - appBskyActorProfileAggregated( 1021 + """Aggregated query for fm.teal.alpha.feed.play""" 1022 + fmTealAlphaFeedPlayAggregated( 1014 1023 """Fields to group by (required)""" 1015 - groupBy: [AppBskyActorProfileGroupByFieldInput!] 1024 + groupBy: [FmTealAlphaFeedPlayGroupByFieldInput!] 1016 1025 1017 1026 """Filter records before aggregation""" 1018 - where: AppBskyActorProfileWhereInput 1027 + where: FmTealAlphaFeedPlayWhereInput 1019 1028 1020 1029 """Order by count (default: desc)""" 1021 1030 orderBy: AggregationOrderBy 1022 1031 1023 1032 """Maximum number of results (default 50, max 1000)""" 1024 1033 limit: Int 1025 - ): [AppBskyActorProfileAggregated!] 1034 + ): [FmTealAlphaFeedPlayAggregated!] 1026 1035 } 1027 1036 1028 1037 union Record = AppBskyActorProfile | FmTealAlphaFeedPlay ··· 1038 1047 1039 1048 """GraphQL subscription root""" 1040 1049 type Subscription { 1041 - """Emitted when a new fm.teal.alpha.feed.play record is created""" 1042 - fmTealAlphaFeedPlayCreated: FmTealAlphaFeedPlay! 1043 - 1044 - """Emitted when a fm.teal.alpha.feed.play record is updated""" 1045 - fmTealAlphaFeedPlayUpdated: FmTealAlphaFeedPlay! 1046 - 1047 - """Emitted when a fm.teal.alpha.feed.play record is deleted""" 1048 - fmTealAlphaFeedPlayDeleted: FmTealAlphaFeedPlay! 1049 - 1050 1050 """Emitted when a new app.bsky.actor.profile record is created""" 1051 1051 appBskyActorProfileCreated: AppBskyActorProfile! 1052 1052 ··· 1055 1055 1056 1056 """Emitted when a app.bsky.actor.profile record is deleted""" 1057 1057 appBskyActorProfileDeleted: AppBskyActorProfile! 1058 + 1059 + """Emitted when a new fm.teal.alpha.feed.play record is created""" 1060 + fmTealAlphaFeedPlayCreated: FmTealAlphaFeedPlay! 1061 + 1062 + """Emitted when a fm.teal.alpha.feed.play record is updated""" 1063 + fmTealAlphaFeedPlayUpdated: FmTealAlphaFeedPlay! 1064 + 1065 + """Emitted when a fm.teal.alpha.feed.play record is deleted""" 1066 + fmTealAlphaFeedPlayDeleted: FmTealAlphaFeedPlay! 1058 1067 } 1059 1068
+5 -3
src/TrackItem.tsx
··· 13 13 fragment TrackItem_play on FmTealAlphaFeedPlay { 14 14 trackName 15 15 playedTime 16 - artists 16 + artists { 17 + artistName 18 + } 17 19 releaseName 18 20 releaseMbId 19 21 actorHandle ··· 53 55 </h3> 54 56 <p className="text-xs text-zinc-500 truncate"> 55 57 {Array.isArray(data.artists) 56 - ? data.artists.map((a: { artistName: string }) => a.artistName).join(", ") 57 - : data.artists || "Unknown Artist"} 58 + ? data.artists.map((a) => a.artistName).join(", ") 59 + : "Unknown Artist"} 58 60 </p> 59 61 </div> 60 62
+15 -4
src/__generated__/AppPaginationQuery.graphql.ts
··· 1 1 /** 2 - * @generated SignedSource<<c45bdaea334f402a012edc7b022378d5>> 2 + * @generated SignedSource<<783e2832122c1d8f7bb41d1fe78f9ef1>> 3 3 * @lightSyntaxTransform 4 4 * @nogrep 5 5 */ ··· 138 138 { 139 139 "alias": null, 140 140 "args": null, 141 - "kind": "ScalarField", 141 + "concreteType": "FmTealAlphaFeedDefsArtist", 142 + "kind": "LinkedField", 142 143 "name": "artists", 144 + "plural": true, 145 + "selections": [ 146 + { 147 + "alias": null, 148 + "args": null, 149 + "kind": "ScalarField", 150 + "name": "artistName", 151 + "storageKey": null 152 + } 153 + ], 143 154 "storageKey": null 144 155 }, 145 156 { ··· 250 261 ] 251 262 }, 252 263 "params": { 253 - "cacheID": "64e4647c8da02ce7d37088b8ed78c6a8", 264 + "cacheID": "dac482c1a09c5930d955d9805c6dfb8d", 254 265 "id": null, 255 266 "metadata": {}, 256 267 "name": "AppPaginationQuery", 257 268 "operationKind": "query", 258 - "text": "query AppPaginationQuery(\n $count: Int = 20\n $cursor: String\n) {\n ...App_plays_1G22uz\n}\n\nfragment App_plays_1G22uz on Query {\n fmTealAlphaFeedPlay(first: $count, after: $cursor, sortBy: [{field: playedTime, direction: DESC}]) {\n totalCount\n edges {\n node {\n playedTime\n ...TrackItem_play\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 269 + "text": "query AppPaginationQuery(\n $count: Int = 20\n $cursor: String\n) {\n ...App_plays_1G22uz\n}\n\nfragment App_plays_1G22uz on Query {\n fmTealAlphaFeedPlay(first: $count, after: $cursor, sortBy: [{field: playedTime, direction: DESC}]) {\n totalCount\n edges {\n node {\n playedTime\n ...TrackItem_play\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists {\n artistName\n }\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 259 270 } 260 271 }; 261 272 })();
+15 -4
src/__generated__/AppQuery.graphql.ts
··· 1 1 /** 2 - * @generated SignedSource<<6fa660d4747cd5269f2ca3ac9e251447>> 2 + * @generated SignedSource<<fa406caeea45379cd74ae946fcf13cc3>> 3 3 * @lightSyntaxTransform 4 4 * @nogrep 5 5 */ ··· 152 152 { 153 153 "alias": null, 154 154 "args": null, 155 - "kind": "ScalarField", 155 + "concreteType": "FmTealAlphaFeedDefsArtist", 156 + "kind": "LinkedField", 156 157 "name": "artists", 158 + "plural": true, 159 + "selections": [ 160 + { 161 + "alias": null, 162 + "args": null, 163 + "kind": "ScalarField", 164 + "name": "artistName", 165 + "storageKey": null 166 + } 167 + ], 157 168 "storageKey": null 158 169 }, 159 170 { ··· 304 315 ] 305 316 }, 306 317 "params": { 307 - "cacheID": "3620b802448dd92e20f1ee8b7fd51980", 318 + "cacheID": "3793b7efac382baa6447beb922658c23", 308 319 "id": null, 309 320 "metadata": {}, 310 321 "name": "AppQuery", 311 322 "operationKind": "query", 312 - "text": "query AppQuery(\n $chartWhere: FmTealAlphaFeedPlayWhereInput!\n) {\n ...App_plays\n ...ScrobbleChart_data\n}\n\nfragment App_plays on Query {\n fmTealAlphaFeedPlay(first: 20, sortBy: [{field: playedTime, direction: DESC}]) {\n totalCount\n edges {\n node {\n playedTime\n ...TrackItem_play\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment ScrobbleChart_data on Query {\n chartData: fmTealAlphaFeedPlayAggregated(groupBy: [{field: playedTime, interval: DAY}], where: $chartWhere, limit: 90) {\n playedTime\n count\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 323 + "text": "query AppQuery(\n $chartWhere: FmTealAlphaFeedPlayWhereInput!\n) {\n ...App_plays\n ...ScrobbleChart_data\n}\n\nfragment App_plays on Query {\n fmTealAlphaFeedPlay(first: 20, sortBy: [{field: playedTime, direction: DESC}]) {\n totalCount\n edges {\n node {\n playedTime\n ...TrackItem_play\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment ScrobbleChart_data on Query {\n chartData: fmTealAlphaFeedPlayAggregated(groupBy: [{field: playedTime, interval: DAY}], where: $chartWhere, limit: 90) {\n playedTime\n count\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists {\n artistName\n }\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 313 324 } 314 325 }; 315 326 })();
+15 -4
src/__generated__/AppSubscription.graphql.ts
··· 1 1 /** 2 - * @generated SignedSource<<c4198cc44967175302aceaf063070457>> 2 + * @generated SignedSource<<896a9c63784bd14529042a1cb0adfd64>> 3 3 * @lightSyntaxTransform 4 4 * @nogrep 5 5 */ ··· 93 93 { 94 94 "alias": null, 95 95 "args": null, 96 - "kind": "ScalarField", 96 + "concreteType": "FmTealAlphaFeedDefsArtist", 97 + "kind": "LinkedField", 97 98 "name": "artists", 99 + "plural": true, 100 + "selections": [ 101 + { 102 + "alias": null, 103 + "args": null, 104 + "kind": "ScalarField", 105 + "name": "artistName", 106 + "storageKey": null 107 + } 108 + ], 98 109 "storageKey": null 99 110 }, 100 111 { ··· 149 160 ] 150 161 }, 151 162 "params": { 152 - "cacheID": "8dfe214f7630ae86042df4676198d298", 163 + "cacheID": "15e882ff59aeffce82a48611e02dbe63", 153 164 "id": null, 154 165 "metadata": {}, 155 166 "name": "AppSubscription", 156 167 "operationKind": "subscription", 157 - "text": "subscription AppSubscription {\n fmTealAlphaFeedPlayCreated {\n uri\n playedTime\n ...TrackItem_play\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 168 + "text": "subscription AppSubscription {\n fmTealAlphaFeedPlayCreated {\n uri\n playedTime\n ...TrackItem_play\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists {\n artistName\n }\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 158 169 } 159 170 }; 160 171 })();
+15 -4
src/__generated__/ProfilePaginationQuery.graphql.ts
··· 1 1 /** 2 - * @generated SignedSource<<e269ae086e67fb50189bc00d0cfa2fba>> 2 + * @generated SignedSource<<39639d8abd772effa21efdf069699bf6>> 3 3 * @lightSyntaxTransform 4 4 * @nogrep 5 5 */ ··· 181 181 { 182 182 "alias": null, 183 183 "args": null, 184 - "kind": "ScalarField", 184 + "concreteType": "FmTealAlphaFeedDefsArtist", 185 + "kind": "LinkedField", 185 186 "name": "artists", 187 + "plural": true, 188 + "selections": [ 189 + { 190 + "alias": null, 191 + "args": null, 192 + "kind": "ScalarField", 193 + "name": "artistName", 194 + "storageKey": null 195 + } 196 + ], 186 197 "storageKey": null 187 198 }, 188 199 { ··· 325 336 ] 326 337 }, 327 338 "params": { 328 - "cacheID": "71567c0f3de4624c411f4821789aaae9", 339 + "cacheID": "4da0ee226512aceadce3210332ed4766", 329 340 "id": null, 330 341 "metadata": {}, 331 342 "name": "ProfilePaginationQuery", 332 343 "operationKind": "query", 333 - "text": "query ProfilePaginationQuery(\n $count: Int = 20\n $cursor: String\n $where: FmTealAlphaFeedPlayWhereInput!\n) {\n ...Profile_plays_mjR8k\n}\n\nfragment Profile_plays_mjR8k on Query {\n fmTealAlphaFeedPlay(first: $count, after: $cursor, sortBy: [{field: playedTime, direction: DESC}], where: $where) {\n totalCount\n edges {\n node {\n ...TrackItem_play\n actorHandle\n appBskyActorProfileByDid {\n displayName\n description\n avatar {\n url(preset: \"avatar\")\n }\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 344 + "text": "query ProfilePaginationQuery(\n $count: Int = 20\n $cursor: String\n $where: FmTealAlphaFeedPlayWhereInput!\n) {\n ...Profile_plays_mjR8k\n}\n\nfragment Profile_plays_mjR8k on Query {\n fmTealAlphaFeedPlay(first: $count, after: $cursor, sortBy: [{field: playedTime, direction: DESC}], where: $where) {\n totalCount\n edges {\n node {\n ...TrackItem_play\n actorHandle\n appBskyActorProfileByDid {\n displayName\n description\n avatar {\n url(preset: \"avatar\")\n }\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists {\n artistName\n }\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 334 345 } 335 346 }; 336 347 })();
+15 -4
src/__generated__/ProfileQuery.graphql.ts
··· 1 1 /** 2 - * @generated SignedSource<<d7bc3a763e9feefe1b760612bdc9ef3a>> 2 + * @generated SignedSource<<586d7e40425eb1e823fb98f47d69cefd>> 3 3 * @lightSyntaxTransform 4 4 * @nogrep 5 5 */ ··· 170 170 { 171 171 "alias": null, 172 172 "args": null, 173 - "kind": "ScalarField", 173 + "concreteType": "FmTealAlphaFeedDefsArtist", 174 + "kind": "LinkedField", 174 175 "name": "artists", 176 + "plural": true, 177 + "selections": [ 178 + { 179 + "alias": null, 180 + "args": null, 181 + "kind": "ScalarField", 182 + "name": "artistName", 183 + "storageKey": null 184 + } 185 + ], 175 186 "storageKey": null 176 187 }, 177 188 { ··· 354 365 ] 355 366 }, 356 367 "params": { 357 - "cacheID": "e246f4fa3d278d1cba09fc7be013172d", 368 + "cacheID": "06807a18670ad67256b497dd0ef8f208", 358 369 "id": null, 359 370 "metadata": {}, 360 371 "name": "ProfileQuery", 361 372 "operationKind": "query", 362 - "text": "query ProfileQuery(\n $where: FmTealAlphaFeedPlayWhereInput!\n $chartWhere: FmTealAlphaFeedPlayWhereInput!\n) {\n ...Profile_plays_3FC4Qo\n ...ScrobbleChart_data\n}\n\nfragment Profile_plays_3FC4Qo on Query {\n fmTealAlphaFeedPlay(first: 20, sortBy: [{field: playedTime, direction: DESC}], where: $where) {\n totalCount\n edges {\n node {\n ...TrackItem_play\n actorHandle\n appBskyActorProfileByDid {\n displayName\n description\n avatar {\n url(preset: \"avatar\")\n }\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment ScrobbleChart_data on Query {\n chartData: fmTealAlphaFeedPlayAggregated(groupBy: [{field: playedTime, interval: DAY}], where: $chartWhere, limit: 90) {\n playedTime\n count\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 373 + "text": "query ProfileQuery(\n $where: FmTealAlphaFeedPlayWhereInput!\n $chartWhere: FmTealAlphaFeedPlayWhereInput!\n) {\n ...Profile_plays_3FC4Qo\n ...ScrobbleChart_data\n}\n\nfragment Profile_plays_3FC4Qo on Query {\n fmTealAlphaFeedPlay(first: 20, sortBy: [{field: playedTime, direction: DESC}], where: $where) {\n totalCount\n edges {\n node {\n ...TrackItem_play\n actorHandle\n appBskyActorProfileByDid {\n displayName\n description\n avatar {\n url(preset: \"avatar\")\n }\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment ScrobbleChart_data on Query {\n chartData: fmTealAlphaFeedPlayAggregated(groupBy: [{field: playedTime, interval: DAY}], where: $chartWhere, limit: 90) {\n playedTime\n count\n }\n}\n\nfragment TrackItem_play on FmTealAlphaFeedPlay {\n trackName\n playedTime\n artists {\n artistName\n }\n releaseName\n releaseMbId\n actorHandle\n musicServiceBaseDomain\n appBskyActorProfileByDid {\n displayName\n }\n}\n" 363 374 } 364 375 }; 365 376 })();
+17 -4
src/__generated__/TrackItem_play.graphql.ts
··· 1 1 /** 2 - * @generated SignedSource<<2ac2423fc2223016d85ad3440952732c>> 2 + * @generated SignedSource<<d110bc257911ffb384b30e7e973211c9>> 3 3 * @lightSyntaxTransform 4 4 * @nogrep 5 5 */ ··· 15 15 readonly appBskyActorProfileByDid: { 16 16 readonly displayName: string | null | undefined; 17 17 } | null | undefined; 18 - readonly artists: string | null | undefined; 18 + readonly artists: ReadonlyArray<{ 19 + readonly artistName: string; 20 + }> | null | undefined; 19 21 readonly musicServiceBaseDomain: string | null | undefined; 20 22 readonly playedTime: string | null | undefined; 21 23 readonly releaseMbId: string | null | undefined; ··· 51 53 { 52 54 "alias": null, 53 55 "args": null, 54 - "kind": "ScalarField", 56 + "concreteType": "FmTealAlphaFeedDefsArtist", 57 + "kind": "LinkedField", 55 58 "name": "artists", 59 + "plural": true, 60 + "selections": [ 61 + { 62 + "alias": null, 63 + "args": null, 64 + "kind": "ScalarField", 65 + "name": "artistName", 66 + "storageKey": null 67 + } 68 + ], 56 69 "storageKey": null 57 70 }, 58 71 { ··· 106 119 "abstractKey": null 107 120 }; 108 121 109 - (node as any).hash = "6c80a7f51708b5def457b01bd5fae190"; 122 + (node as any).hash = "93f45db972efd335604fbc28995328de"; 110 123 111 124 export default node;