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

fix artists field

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