Skip to content

Conversation

@schottra
Copy link
Contributor

@schottra schottra commented Jul 29, 2024

Description

This is a redo of #9228 with a different approach to defining the models so that we don't end up with type errors during serialization.

There were two issues with the previous implementation:

  1. If the value we pass to success_response isn't fully JSON-serializable on its own, it will cause an error. I did not notice that success_response will encode the entire data field before marshaling so that it can sign the result. Long term, this probably needs to be changed.

  2. The non-repost endpoints that don't use the Polymorph field will barf when they run into the special classes we use for the Polymorph mapping. So we need to only apply those class wrappers when serializing a list of reposts where we will use the Polymorph field.

I've updated the approach to use a mapping function for just the reposts endpoint which will wrap the incoming dictionaries in our own classes which also extend dict (so they are serializable). And I've restored the special ActivityItem and ActivityItemFull classes which correctly handle serialization of the item property when using one of the models in the non-Polymorph case.

This stuff is complicated!

How Has This Been Tested?

Spun up a local stack and hit all the endpoints that use these models to make sure they don't throw errors and return the expected shapes.

schottra added 9 commits July 22, 2024 14:27
* origin/main:
  Audius Protocol v0.6.153
  mutex around crc32 hasher (#9231)
  Improve logging spam situation (#9238)
  [C-4792] Disallow Add To Playlist for hidden tracks (#9236)
  [PAY-3176][PAY-3188][PAY-3193] Include premium tracks in DN playlists for owner (#9234)
  Remove use_sdk_purchase_track and use_sdk_purchase_album feature flags (#9192)
  Add ability to change playlist/track visibility w/ audius-cmd (#9094)
  Remove use_sdk_tips feature flag (and fix indexing check) (#9193)
  Pin docker-compose-plugin to fix env var issue (#9235)
  [QA-1449] [C-4808] Reassign playlist_contents in get_bulk_playlists (#9232)
  [C-4832] Fix missing play counts on track tiles (#9230)
  [QA-1442] Add offline indicator to collection card (#9227)
  [QA-1463] Change order of mobile action buttons (#9229)
* origin/main: (36 commits)
  [PAY-3265, PAY-3241] Disallow scheduled playlists in upload/edit; Fix mood placeholder (#9272)
  [C-4690] Wire up advanced search deep links (#9271)
  [C-4670] Fix track search with deleted premium stems (#9257)
  requery for audio analysis jobs every 15 min (#9265)
  [C-4874] Update time to 11:59 when scheduling for same day (#9266)
  Fix missing refactor bug (#9270)
  [PAY-3232] Fix hidden visibility bug when setting price and audience fields (#9268)
  Revert "Update models used in DN reposts endpoints" (#9269)
  [C-4840] Update search screen to auto focus the input (#9263)
  [C-4867] Fix collection release date timezone (#9267)
  [C-4866] Fix edit collection form submit (#9262)
  [PAY-3187] Fix messed up back button form state for payment settings (#9260)
  Upgrade vector to 0.39.0 (#9261)
  Move to all sha256 ordering (#9239)
  Audius Protocol v0.6.154
  placement hosts analyze legacy audio analyses in addition to storeall node (#9259)
  [PAY-3196][PAY-3230] Fix miscellaneous editable access issues on mobile (#9258)
  mediorum configurable num workers (#9256)
  [C-4793, C-4791] Don't favorite hidden album tracks on purchase (#9254)
  [C-4863] Fix cascading publish on edit collection (#9249)
  ...
@changeset-bot
Copy link

changeset-bot bot commented Jul 29, 2024

🦋 Changeset detected

Latest commit: 6352449

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@audius/sdk Minor
@audius/sp-actions Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@schottra schottra requested review from rickyrombo and sliptype July 30, 2024 16:33
Copy link
Contributor

@sliptype sliptype left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like there are so many foot guns in the api.

But this all makes sense to me! nice work

activities = list(map(extend_activity, reposts))

return success_response(activities)
return success_response(list(map(make_polymorph_activity, activities)))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neat 📸



# Only to be used with `Polymorph` to map the returned classes to marshalling models
def make_polymorph_activity(activity: dict):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense

@schottra schottra merged commit 1c61e0b into main Jul 30, 2024
@schottra schottra deleted the update-dn-models branch July 30, 2024 20:38
schottra added a commit that referenced this pull request Jul 30, 2024
* origin/main: (69 commits)
  Update dn models (#9291)
  [PAY-3260] Use 'Today' for matching release dates (#9292)
  [PAY-3258] BoxedTextField can error before form submission (#9305)
  [PAY-3248][PAY-3256][PAY-3234] Fix misc android issues (#9307)
  Premium extras updates (#9306)
  Silence request logs for python es client (#9301)
  [PAY-3263] add playlists & albums release date if null (#9304)
  Small FilterButton hover style tweak (#9303)
  [QA-1448] Fix user badge spacing (#9302)
  [C-4868] BPM validation (#9295)
  [C-4854] Add Premium Extras label (#9294)
  [PAY-3261] Update remix settings copy (#9299)
  Audius Protocol v0.6.158
  Longer deadline for fixing files (#9297)
  [PAY-3236][PAY-3242][PAY-3259] Fix play button in tracks table (#9288)
  [PAY-3240] Prevent wrong users from seeing /edit pages (#9298)
  PAY-3233 Disable reset on select field for AM/PM (#9296)
  [PAY-3249] Implement pnagD trending strategy (#9273)
  [PAY-3257] Default prices for premium albums/tracks (#9293)
  Pin Rust version to 1.79.0 (#9290)
  ...
schottra added a commit that referenced this pull request Jul 30, 2024
…ent-user

* origin/main: (74 commits)
  Update users endpoints: round 1 (#9166)
  PAY-3280 Fix gated access display (#9311)
  [PAY-3276] No scheduled playlists (#9312)
  [PAY-3262] Fix edit new playlist (#9309)
  Makefile improvements to core (#9300)
  Update dn models (#9291)
  [PAY-3260] Use 'Today' for matching release dates (#9292)
  [PAY-3258] BoxedTextField can error before form submission (#9305)
  [PAY-3248][PAY-3256][PAY-3234] Fix misc android issues (#9307)
  Premium extras updates (#9306)
  Silence request logs for python es client (#9301)
  [PAY-3263] add playlists & albums release date if null (#9304)
  Small FilterButton hover style tweak (#9303)
  [QA-1448] Fix user badge spacing (#9302)
  [C-4868] BPM validation (#9295)
  [C-4854] Add Premium Extras label (#9294)
  [PAY-3261] Update remix settings copy (#9299)
  Audius Protocol v0.6.158
  Longer deadline for fixing files (#9297)
  [PAY-3236][PAY-3242][PAY-3259] Fix play button in tracks table (#9288)
  ...
audius-infra pushed a commit that referenced this pull request Jul 31, 2024
[08addb9] [PAY-3194] Pipe through user_id param if specified for reposts endopint (#9316) Randy Schott
[1c61e0b] Update dn models (#9291) Randy Schott
[3a73860] Silence request logs for python es client (#9301) Steve Perkins
[28b71e0] [PAY-3263] add playlists & albums release date if null (#9304) Raymond Jacobson
audius-infra pushed a commit that referenced this pull request Aug 3, 2024
[7e9ef50] [C-4681] [C-4680] Add analytics for search v2 (#9363) Sebastian Klingler
[d9b0c78] [PAY-3279] Fix misc web album UI issues (#9362) Raymond Jacobson
[1b494ff] Improve SDK rewards claiming errors with RewardManagerError abstraction (#9214) Marcus Pasell
[05720e3] [C-4891] Add artist pick to mobile (#9359) Dylan Jeffers
[932ddc7] Add cors headers for actions (#9360) Raymond Jacobson
[56409de] [C-4798] Filter all categories by verified (#9353) Sebastian Klingler
[048a4d8] [PAY-3253] Fix confirmation drawer height (#9310) Dylan Jeffers
[245baf4] [C-4915] Fix create collection card height (#9357) Dylan Jeffers
[216a3fb] [C-4895] Fix profile screen verified badge (#9356) Dylan Jeffers
[9500340] [C-4899] Fix isrc and iswc validation (#9352) Dylan Jeffers
[7c780e8] Fix sign in (#9355) Dylan Jeffers
[654e7a1] Add IconTowerBroadcast to harmony (#9354) Andrew Mendelsohn
[a225c68] [PAY-3311] Create one_to_many_dms flag (#9351) Andrew Mendelsohn
[6271d09] [C-4896] [C-4893] [C-4913] BPM precision adjustments (#9349) Sebastian Klingler
[dc2a681] Remove null checks for metadata items in useXMetadata (#9350) Reed
[06cbc13] Hide play counts for all gated content in TracksTable (#9347) Reed
[4de149f] [C-4897] Improve empty edit collection page (#9346) Dylan Jeffers
[67cbdfe] Update dapp-store build artifacts audius-infra
[f1d908b] Fix show premium downloads message (#9344) Saliou Diallo
[34445b8] [C-3907] Add empty state for artist results in sign up flow (#9343) Kyle Shanks
[dc84357] add bpm edit flag col (#9324) Michelle Brier
[b50abba] Add actions.json to cloudflare (#9341) Raymond Jacobson
[8e9f6c3] [PAY-3283] Show high res artwork in edit (#9342) Raymond Jacobson
[e91b12a] [C-4905] Fix app crash when navigating to let them dj when signed out (#9340) Kyle Shanks
[8dbbd21] Add actions.json for solana blink support (#9331) Raymond Jacobson
[3e70a7f] [QA-1374] Fix play/preview logic on track page (#9337) Dylan Jeffers
[1e35fc3] [PAY-3298] Fix track preview generation (#9339) Dylan Jeffers
[6867056] [C-4903] Update icon sizes for collection card actions and notifications (#9338) Kyle Shanks
[6c7a231] [PAY-3271] Prevent navigation prompt from showing on delete (#9336) Andrew Mendelsohn
[e1b8690] PAY-3290 Special Access should disable entirely (#9334) Marcus Pasell
[0a64f84] PAY-3291 Don't show purchase in overflow menu for non-purchase-gated tracks (#9335) Marcus Pasell
[0b2c061] PAY-3287 Validate main form on submitting access gate subform mobile (#9332) Marcus Pasell
[9e81415] PAY-3288 Fix edit collection confirmations on mobile (#9330) Marcus Pasell
[a3bfb57] Fix CollectionCard test (#9329) Sebastian Klingler
[e6374bc] [PAY-3282] Prevent publishing 0 length playlist (#9328) Raymond Jacobson
[b799fcb] typescript impl of R2(crc32) + R2(sha256) ordering. (#8942) Steve Perkins
[eb8724e] PAY-3275 Portal drawers to the correct location (#9325) Marcus Pasell
[f404f01] Remove legacy edit track (#9323) Andrew Mendelsohn
[11f0ed5] [PAY-3274] Show 'releases today' on mobile (#9314) Andrew Mendelsohn
[18f4bea] [PAY-3197] Remove gated-content-upload-prompt drawer (#9318) Reed
[c36b94c] C-4894 Make edit track/edit collection use same buttons (#9321) Marcus Pasell
[1b6a1b7] Migrate sign out confirmation drawer to harmony (#9320) Reed
[7c8a654] [PAY-3254] Fix edit remix (#9322) Dylan Jeffers
[9bd24c8] [C-4885] [C-4888] [C-4889] [C-4882] [C-4883] Advanced search UI fixes pt 3 (#9317) Sebastian Klingler
[619da11] Fix "date required" error when selecting date (#9315) Dylan Jeffers
[c29f8f8] [PAY-3277] Show release date for all public tracks/collections (#9313) Reed
[885479a] Update users endpoints: round 1 (#9166) Randy Schott
[8618e3c] PAY-3280 Fix gated access display (#9311) Marcus Pasell
[69e76c7] [PAY-3276] No scheduled playlists (#9312) Dylan Jeffers
[91197d4] [PAY-3262] Fix edit new playlist (#9309) Dylan Jeffers
[1c61e0b] Update dn models (#9291) Randy Schott
[cf20265] [PAY-3260] Use 'Today' for matching release dates (#9292) Andrew Mendelsohn
[3290d1e] [PAY-3258] BoxedTextField can error before form submission (#9305) Saliou Diallo
[1dd131f] [PAY-3248][PAY-3256][PAY-3234] Fix misc android issues (#9307) Raymond Jacobson
[782e9d9] Premium extras updates (#9306) Dylan Jeffers
[61cc53a] Small FilterButton hover style tweak (#9303) Sebastian Klingler
[f7cf7d1] [QA-1448] Fix user badge spacing (#9302) Kyle Shanks
[5af538a] [C-4868] BPM validation (#9295) Sebastian Klingler
[22ca755] [C-4854] Add Premium Extras label (#9294) Dylan Jeffers
[b66ca17] [PAY-3261] Update remix settings copy (#9299) Raymond Jacobson
[f713455] [PAY-3236][PAY-3242][PAY-3259] Fix play button in tracks table (#9288) Saliou Diallo
[d87357e] [PAY-3240] Prevent wrong users from seeing /edit pages (#9298) Raymond Jacobson
[8b92b23] PAY-3233 Disable reset on select field for AM/PM (#9296) Marcus Pasell
[3a63fbb] [PAY-3257] Default prices for premium albums/tracks (#9293) Andrew Mendelsohn
[7d41d87] [C-4836] Adjust FilterButton active states (#9289) Sebastian Klingler
[f680c81] [QA-1473] Fix duplicate purchase button in TracksTable row (#9284) Sebastian Klingler
[97bf97d] Fix use-revert-on-cancel (#9286) Dylan Jeffers
[2b9b811] Bump mobile to 109 (#9283) Dylan Jeffers
[68ebca7] Update copy for preview length (#9280) Sebastian Klingler
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants