Commit Graph

47971 Commits

Author SHA1 Message Date
45a23e5a43 Add EF to realm score migration 2022-01-13 18:23:18 +09:00
ded1d87739 Move RulesetStore construction earlier in process so rulesets are available for EF migration 2022-01-13 18:23:18 +09:00
069d6d2954 Remove pointless compatibility parameter BeatmapSetInfoID 2022-01-13 18:02:10 +09:00
c61419dfe5 Fix scores not using correct filename/display strings
I've updated all cases where we should have been using
`GetDisplayString()` anyway, but left the `ToString()` implementations
in place for safety. They should probably be removed in the future.
2022-01-13 16:56:11 +09:00
93c78253d6 Add synchronous fetch flow to BeatmapOnlineLookupQueue
The async flow doesn't work great with the realm import process. We
might be able to improve on this going forward, but for the time being
adding a synchronous path seems safest.

After all, we are already an an asynchronous (dedicated) thread pool at
this point.
2022-01-13 16:36:54 +09:00
bdb2979b2e Remove async from Populate method 2022-01-13 16:36:54 +09:00
70c107b434 Remove pointless override method in RealmArchiveModelManager 2022-01-13 16:27:12 +09:00
88145dedf1 Remove oudated comments 2022-01-13 15:27:43 +09:00
6025fe325d Fix filter criteria not being applied after carousel loads new beatmap sets 2022-01-13 15:08:51 +09:00
0a133c7e97 Fix typo in comment in IntroScreen 2022-01-13 13:47:23 +09:00
dcc354aa7c Fix deleted scores not being cleaned up on next startup 2022-01-13 13:40:09 +09:00
7a81fe19f6 Bump realm schema version to allow upgrades 2022-01-13 13:28:46 +09:00
b77cb344d5 Use ctor rather than MemberwiseClone to guarantee a safer clone of BeatmapDifficulty 2022-01-13 13:23:41 +09:00
86b2ac3217 Remove unnecessary Ruleset null check in BeatmapDifficultyCache 2022-01-13 13:19:49 +09:00
7baff18764 Add back PerformRead return safety by checking IsManaged status of returned data 2022-01-13 13:14:44 +09:00
085893c9b4 Fix stray bracket 2022-01-13 13:03:57 +09:00
65dd80e6f6 Sanitise mods / statistics cache logic in ScoreInfo 2022-01-13 12:59:16 +09:00
1a29098f3b Change default value and add comment explaining why skins are never "locally available" 2022-01-13 12:50:18 +09:00
ebe8ba3c3c Fix unintended change to dotsetting 2022-01-13 12:47:11 +09:00
4c79145c11 Fix potential mod nullref in APIUserScoreAggregate's CreateScoreInfo implementation 2022-01-13 00:28:16 +09:00
b2d09b7b10 Fix further warnings 2022-01-12 23:42:12 +09:00
b5f670cc5b Add far too many fixes for ruleset non-nullable requirements 2022-01-12 23:24:11 +09:00
51251e3204 Fix CI reported warnings 2022-01-12 22:39:00 +09:00
08da948afc Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-12 19:22:55 +09:00
017f5a9b9b Merge pull request #16430 from smoogipoo/less-harsh-mania-hp
Fix mania requiring PERFECTs to maintain HP
2022-01-12 19:07:13 +09:00
c97db5a863 Merge pull request #16431 from peppy/skin-hash-repopulation
Fix skin hash repopulation not working since realm migration
2022-01-12 19:03:56 +09:00
38cc1ce098 Add missing ruleset in test scores 2022-01-12 18:51:30 +09:00
8c8c5f4c33 Fix skin hash repopulation not working since realm migration 2022-01-12 18:32:51 +09:00
4106ebf881 Fix mania requiring PERFECTs to maintain HP 2022-01-12 18:29:23 +09:00
ef0f794fd6 Remove stay newline 2022-01-12 18:13:14 +09:00
eb70a1eeb7 Replace compatibility properties with direct references 2022-01-12 18:13:14 +09:00
482cf29e28 Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-12 17:57:14 +09:00
e12025dd48 Cascade delete metadata when beatmaps are deleted 2022-01-12 17:49:11 +09:00
34aa1bf21d Sanitise and remove some usages of Detach which are no longer required 2022-01-12 17:49:11 +09:00
5f7365e8f3 Ensure scores are cleaned up alongside beatmap so they don't have a null reference 2022-01-12 17:49:11 +09:00
f24b2b1be3 Make copying detached changes to realm only exposed for BeatmapSet
Also fixes remaining issues with the copy process.
2022-01-12 17:49:11 +09:00
a4de0f93fa Move manager Update methods to be explicit to where they are still used by legacy code
Also fixes skin hash repopulation being completely broken.
2022-01-12 17:49:11 +09:00
a307f7e90e Add test coverage of updating via copying changes from detached instance 2022-01-12 17:49:11 +09:00
580ad03f8d Combine mapper configurations and add more explanation about special cases 2022-01-12 17:49:11 +09:00
c92aff8d2b Add test of cyclic beatmap/beatmapset references 2022-01-12 17:49:11 +09:00
509301d94f Update detach test to assert correct behaviour 2022-01-12 17:49:11 +09:00
51d6db1bca Add equatable support to IUser and RealmUser
Not sure this will stick, but let's add it for now to make testing
detach support work nicely.
2022-01-12 17:49:11 +09:00
6db3c32dd1 Handle automapper realm cyclic references via AfterMaps
This may not be the cleanest solution, but there don't seem to be any
way towards this either.

- `UseDestinationValue` has been inherited by default as noted in
https://docs.automapper.org/en/stable/10.0-Upgrade-Guide.html#usedestinationvalue-is-now-inherited-by-default, and its behaviour in this case would be using the nested **managed** realm object for the destination member rather than creating an unmanaged version.

- `MaxDepth` already sets `PreserveReferences` so there's no point of using it.

- `MaxDepth` should probably not be set for all maps, only for those with
cyclic references, to avoid the expensive overhead of `PreserveReferences`, as mentioned in https://docs.automapper.org/en/stable/5.0-Upgrade-Guide.html#circular-references.

That aside, `MaxDepth` should actually only be set to `1` for
`BeatmapSetInfo` mapping, because we don't want AutoMapper to create a
nested instance of `BeatmapSetInfo` in each mapped/detached beatmap, but
for some reason, doing that will cause automapper to not map any beatmap
inside the set and leave it with 0 beatmaps.

While on the other hand, using `MaxDepth(2)` for `BeatmapSetInfo` works,
but creates an unused instance of a `BeatmapSetInfo` inside each mapped
beatmap, which may not be ideal.

For `BeatmapInfo`, it has to be `MaxDepth(2)`, in which the first
`BeatmapInfo` depth would be itself (when detaching a beatmap), and the
second would be nested beatmaps inside the mapped/detached
`BeatmapSetInfo` within the beatmap. (note that when detaching a beatmap
set, the unused instance of `BeatmapSetInfo` within each beatmap of that
beatmap set doesn't also have a list of unused beatmaps as one might expect from the depth specification, it surprisingly has 0 beatmaps)

This causes it to create an unused instance of `BeatmapInfo` in the beatmap set resembling the root mapped/detached beatmap, but that one might be inevitable.
2022-01-12 17:49:11 +09:00
dc3730f334 Fix song select import popup not always showing 2022-01-12 17:49:11 +09:00
017285b694 Update MusicController to handle deletions more correctly 2022-01-12 17:49:11 +09:00
157dfdaa82 Fix protected beatmap sets getting deleted 2022-01-12 17:49:11 +09:00
0aff1c232b Fix deleted/hidden carousel queries 2022-01-12 17:49:11 +09:00
72656ae01e Fix beatmap restore/undelete flows 2022-01-12 17:49:11 +09:00
46206f70d6 Fix beatmap mass deletion flow 2022-01-12 17:49:11 +09:00
d5239d550a Add refetch for non-managed hide/restore attempts 2022-01-12 17:49:11 +09:00