1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 10:57:26 +08:00
Commit Graph

1585 Commits

Author SHA1 Message Date
Dan Balasescu
b9ab4a2b7c Update score conversion to consider legacy multiplier 2023-10-02 16:56:15 +09:00
Bartłomiej Dach
0769d0f49f
Merge branch 'master' into fix-batch-import-score-missing-notifications 2023-09-27 17:06:47 +02:00
Bartłomiej Dach
934ac1b640
Merge branch 'master' into better-erroring-score-import-fail 2023-09-27 14:34:14 +02:00
Dean Herbert
2481c0b64b Don't show replay import "missing beatmap" notifications during stable import
Closes https://github.com/ppy/osu/issues/24926.
2023-09-27 17:04:43 +09:00
Dean Herbert
0dcf7a2fa9
Merge branch 'master' into split-legacy-scoring-attribs 2023-09-26 15:52:27 +09:00
Dean Herbert
d1d82d2b49 Improve notification display when score import fails 2023-09-26 15:00:56 +09:00
Bartłomiej Dach
ed9039f60f
Fix notification text sets overwriting each other 2023-09-19 11:12:58 +02:00
Dean Herbert
f726c38215 Pass ArchiveReader instead of Stream to simplify resolution code 2023-09-19 17:49:15 +09:00
Dean Herbert
7f30354e61 Adjust sizing slightly to remove need for CollapsibleButtonContainerSlim 2023-09-19 17:20:58 +09:00
Dean Herbert
0555d22eb8 Add comment mentioning why hover is disabled on the notification type 2023-09-19 16:35:22 +09:00
Bartłomiej Dach
25e43bd7d7
Auto-close notification after successful download 2023-09-18 14:56:06 +02:00
Bartłomiej Dach
4cdd19bb5a
Use different copy when auto-downloading 2023-09-18 14:56:06 +02:00
Bartłomiej Dach
3bddf4bf9a
Rename spectator-specific settings to more generic (with backwards migration) 2023-09-18 14:56:06 +02:00
Bartłomiej Dach
27471ad170
Make missing beatmap notification simple
Progress didn't work for several reasons:

- It was spinning when nothing was actually happening yet
  (especially egregious with autodownload off)

- It was blocking exits (as all progress notifications do)

- When actually going to download, two progress notifications would
  pertain to one thing

- It wasn't helping much with the actual implementation of score
  re-import, cancelling the progress notification would result in
  similarly jank UX of beatmap importing but not the score.
2023-09-18 14:56:06 +02:00
Bartłomiej Dach
b2c98da330
Reword and localise copy 2023-09-18 14:56:06 +02:00
Bartłomiej Dach
2709c6cd67
Integrate nano beatmap card into the notification 2023-09-18 14:56:06 +02:00
Bartłomiej Dach
06d1a2a316
Merge branch 'beatmap-card-nano' into missing-beatmap 2023-09-18 14:56:06 +02:00
Bartłomiej Dach
c8b18acd4d
Bring back disposal of stream after copy-out to MemoryStream
Was there in previous code and got removed in the refactor. I'd rather
have it than not.
2023-09-14 19:36:35 +02:00
Dean Herbert
57f32b177d Fix incorrect handling of non-MemoryStream pathway 2023-09-14 22:19:18 +09:00
Dean Herbert
364094fcf2 Inline all archive reader pathing 2023-09-14 13:38:23 +09:00
Dean Herbert
541cd972e1 Rename ArchiveReader implementations to read better 2023-09-14 13:36:07 +09:00
Dean Herbert
0657b55196 Avoid MemoryStream.ToArray overhead in LegacyByteArrayReader 2023-09-14 13:33:25 +09:00
Dean Herbert
b5902a8736 Avoid MemoryStream overhead for incoming non-MemoryStream in ImportTask 2023-09-14 13:29:29 +09:00
Dan Balasescu
4198e025fa Fix overflow 2023-09-08 00:27:01 +09:00
Dan Balasescu
2334be1987 Split legacy scoring attributes into a separate object 2023-09-07 21:10:38 +09:00
cdwcgt
fd1fce486a
ensure dispose realmSubscription 2023-09-05 00:21:08 +09:00
cdwcgt
87aa191c12
use realm Subscription instead of Beatmap Download Tracker 2023-09-04 17:53:31 +09:00
cdwcgt
f68a12003a
check beatmap hash before try to import 2023-09-04 17:37:31 +09:00
cdwcgt
164f61f590
clean up 2023-09-04 17:14:04 +09:00
cdwcgt
58844092d6
post a notification instead a screen 2023-09-04 16:17:21 +09:00
Dean Herbert
5ddb10281b Move combo exponent to shared constant 2023-08-24 14:55:44 +09:00
Dean Herbert
5dee43815c Bump version to allow migration to re-run 2023-08-22 16:13:01 +09:00
Dean Herbert
4e9e084b2c Merge branch 'master' into scorev3 2023-08-22 15:52:22 +09:00
Bartłomiej Dach
273dcf9150
Also update the reference to added flag in schema change breakdown 2023-08-21 17:44:35 +02:00
Bartłomiej Dach
8533cba0bf
Fix mismatching schema version in comment 2023-08-21 17:27:05 +02:00
Dean Herbert
db893f3dc7 Merge branch 'master' into fix-score-import-fail-fail-fail 2023-08-21 19:34:12 +09:00
Bartłomiej Dach
de9a4448fc
Merge branch 'master' into fix-export-slider 2023-08-21 07:28:16 +02:00
Bartłomiej Dach
a942b6ff74
Replace inline comment with actual explanation of what's happening 2023-08-21 07:27:02 +02:00
OliBomby
8686b6b1e6 fix The last slider point has effect on previous inherited 2023-08-16 16:44:08 +02:00
Bartłomiej Dach
4f47b196c1
Merge branch 'master' into fix-unsafe-realm-access 2023-08-16 09:59:17 +02:00
Bartłomiej Dach
d70a9a5bc4
Fill out xmldoc and adjust inline commentary 2023-08-16 09:40:46 +02:00
Dean Herbert
caf0fd0742 Refactor migration to read the same as previous one 2023-08-16 16:21:42 +09:00
Dean Herbert
68db112882 Re-date migration 2023-08-16 16:20:17 +09:00
Dean Herbert
6e11162ab1 Add helper method for safer realm Find<T> 2023-08-16 15:37:09 +09:00
Bartłomiej Dach
88295a49aa
Fix invalid reference in xmldoc 2023-08-16 07:38:31 +02:00
Bartłomiej Dach
6c4c76350f
Remove unused using directive 2023-08-16 07:36:56 +02:00
Dean Herbert
531794b26b Fix ModelManager not correctly re-retrieving realm objects before performing operations
Falls into the age-old trap of attempting to retrieve an item from realm
without first ensuring that realm is in an up-to-date state.

Consider this scenario:

- Editor is entered from main menu, causing it to create a new beatmap
  from its async `load()` method.
- Editor opens correctly, then main thread performs a file operations on
  the same beatmap.
- Main thread is potentially not refreshed yet, and will result in `null`
  instance when performing the re-fetch in `performFileOperation`.

I've fixed this by using the safe implementation inside `RealmLive<T>`.
Feels like we want this is one place which is always used as the correct
method.

On a quick search, there are 10-20 other usages of `Realm.Find<T>` which
could also have similar issues, but it'll be a bit of a pain to go
through and fix each of these. In 99.9% of cases, the accesses are on
instances which couldn't have just been created (or the usage of
recently-imported/created is blocked by realm subscription flows, ie.
baetmap import) so I'm not touching them for now.

Something to keep in mind when working with realm going forward though.
2023-08-16 14:23:32 +09:00
Dean Herbert
502844a858 Add ability to construct RealmLive from ID 2023-08-16 14:23:01 +09:00
QuantumSno
a0543d97bd
Merge branch 'master' into leaderboard-toggle 2023-08-12 11:21:02 -04:00
Bartłomiej Dach
253392409e
Fix LegacyBeatmapExporter not converting beatmap between decode and re-encode 2023-08-12 00:50:31 +02:00
Bartłomiej Dach
2b738edb93
Reword / fix comments 2023-08-10 22:55:02 +02:00
QuantumSno
71c42167e7 Updated wording on realm comments 2023-08-10 10:17:12 -04:00
QuantumSno
5443f89dca Assuming its still set to tab, removes binding for toggle chat so itll be set to the new default 2023-08-01 16:58:52 -04:00
QuantumSno
426bc52fd5 Updated schema_version number and added braces around some migration cases to help with re-using variable names 2023-08-01 14:27:37 -04:00
Dean Herbert
30baac0f3d Avoid reprocessing scores which already failed an upgrade previously
Closes https://github.com/ppy/osu/issues/24301.
2023-07-26 16:22:10 +09:00
OliBomby
e7a9175aea fix skin using wrong stream 2023-07-18 13:08:05 +02:00
OliBomby
63dd8bd991 use base.GetFileContents to get file stream 2023-07-18 12:40:48 +02:00
OliBomby
bcdf531039 truncate end time before start time 2023-07-18 12:28:35 +02:00
OliBomby
5d82190b70 Merge remote-tracking branch 'upstream/master' into legacy-export 2023-07-18 12:18:49 +02:00
OliBomby
c02684d985 truncate hit object end time 2023-07-18 12:18:43 +02:00
Zyf
b672b49e02 Scoring : Implement v1 to v3 conversion. 2023-07-15 23:20:49 +02:00
Dean Herbert
480259b8d2 Ensure migration is never run on scores with new-enough TotalScoreVersions 2023-07-14 20:02:25 +09:00
OliBomby
1d837a8725 Move all conversion code to LegacyBeatmapExporter 2023-07-13 00:20:01 +02:00
OliBomby
3052c317e1 change .osz2 to .olz (osu lazer zip) 2023-07-12 15:04:06 +02:00
OliBomby
465cc759f0 Add xmldoc to clarify the purpose of BeatmapExporter 2023-07-12 14:49:49 +02:00
OliBomby
b577b6b6ae Export legacy converted beatmaps as .osz and non-converted beatmaps as .osz2 2023-07-11 21:04:09 +02:00
OliBomby
2db25722cb It works now 2023-07-11 20:18:54 +02:00
OliBomby
06e5ef88c0 legacy export broken 2023-07-11 02:30:16 +02:00
Bartłomiej Dach
9e4ffc8c12
Split helper method for populations from replay 2023-07-10 21:10:01 +02:00
Bartłomiej Dach
e12255bbe5
Do not run legacy conversion with ScoreV2 mod present 2023-07-09 17:48:25 +02:00
Bartłomiej Dach
9377622cd4
Add backwards migration to populate ScoreV2 mod for already-imported scores 2023-07-09 17:48:24 +02:00
Dean Herbert
d72765b6f8
Merge pull request #24114 from peppy/editor-save-local-score-management
Ensure scores always have the correct linked `BeatmapInfo`
2023-07-07 15:40:54 +09:00
Dean Herbert
8978f2ddd8 Remove all usage of !something!.something
aka don't mix NRT forgiving syntax with not syntax
2023-07-07 10:15:33 +09:00
Bartłomiej Dach
1473abd909
Remove outdated xmldoc 2023-07-06 22:01:02 +02:00
Dean Herbert
a98a36872e Bring realm library up-to-date 2023-07-06 13:37:43 +09:00
Dean Herbert
9ff6b3fcd3 Merge branch 'master' into editor-save-local-score-management 2023-07-06 12:28:44 +09:00
Dean Herbert
f2aa80f413 Rename and adjust xmldoc on TotalScoreVersion 2023-07-04 20:04:02 +09:00
Dean Herbert
aee89e5e4b Rewrite comment regarding LegacyTotalScore 2023-07-04 19:59:57 +09:00
Dean Herbert
dd9998127e Count missing beatmaps as errored items 2023-07-04 18:35:03 +09:00
Dean Herbert
a0c3fa9c13 Move preconditions to realm migration step to simplify marker version logic 2023-07-04 17:53:53 +09:00
Dean Herbert
1629024111 ILegacyScoreProcessor -> ILegacyScoreSimulator 2023-07-04 17:32:54 +09:00
Dean Herbert
d74b1e148d Make ScoreInfo.BeatmapInfo nullable 2023-07-04 14:50:34 +09:00
Dean Herbert
67650831bd Remove unnecessary null check 2023-07-04 14:19:25 +09:00
Dean Herbert
4203e2183d
Merge branch 'master' into diffcalc-total-scorev1 2023-07-04 14:15:24 +09:00
Dan Balasescu
c6ad184d94 Move Ruleset method to ILegacyRuleset interface 2023-06-29 17:24:37 +09:00
Dan Balasescu
ddd870e843 Make LegacyTotalScore nullable 2023-06-29 17:19:10 +09:00
Dan Balasescu
09bc8e45de Refactoring 2023-06-28 16:14:32 +09:00
Dean Herbert
99e55bb9c0 Add logging and Debug.Fail on detached beatmap detection 2023-06-28 12:21:05 +09:00
Dean Herbert
8e80e2fa32 Fix incorrect realm copy logic when a beatmap becomes detached from its set
The code here was assuming that if the beatmap which is having changes
copied across does not exist within the `BeatmapSet.Beatmaps` list, it
was not yet persisted to realm.

In some edge case, it can happen that the beatmap *is* persisted to
realm but not correctly attached to the beatmap set. I don't yet know
how this occurs, but it has caused loss of data for at least two users.

The fix here is to check realm-wide for the beatmap (using its primary
key) rather than only in the list. We then handle the scenario where the
beatmap needs to be reattached to the set as a seprate step.

---

This does raise others questions like "are we even structuring this
correctly? couldn't a single beatmap exist in two different sets?"

Maybe, but let's deal with that if/when it comes up.
2023-06-27 18:20:01 +09:00
Dan Balasescu
0c5c09597c Store old total score as LegacyTotalScore 2023-06-27 14:59:40 +09:00
Dan Balasescu
8e79510793 Add migration for total score conversion 2023-06-26 21:53:21 +09:00
Dean Herbert
df5b389629 Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
Dean Herbert
0ab0c52ad5 Automated pass 2023-06-24 01:00:03 +09:00
Dean Herbert
1f17f416a4 Force migration of old-new standardised scores to run once more 2023-06-16 14:04:18 +09:00
Dean Herbert
94b7de4b3f Fix old-new standardised score conversion missing some scores due to not rounding correctly 2023-06-16 14:01:56 +09:00
Bartłomiej Dach
51b5a0863f
Apply migration to new standardised score on normal reimport too 2023-06-15 21:53:15 +02:00
Dean Herbert
d83bf02923
Fix thing 2023-06-15 21:43:41 +02:00
Bartłomiej Dach
6205864c62
Fix score migration not considering mod multipliers 2023-06-13 19:00:13 +02:00
Dean Herbert
422e87f0ec Fix weird usings 2023-06-13 05:30:12 +09:00
Dean Herbert
c1b0c60e79 Ensure all misses are dequeued 2023-06-13 05:24:04 +09:00
Dean Herbert
3304e41a30 Add more commenting 2023-06-13 05:20:29 +09:00
Dean Herbert
afb5a9243a
Fix typo
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-06-13 05:13:22 +09:00
Dean Herbert
e9fb1f8932 Avoid tracking hit events altogether during migration 2023-06-13 02:15:41 +09:00
Dean Herbert
385f6dbd84 Move local classes to their rightful location 2023-06-13 02:12:23 +09:00
Dean Herbert
87520ae400 Avoid overhead from retrieving MaxCombo inside loop from realm 2023-06-13 02:05:00 +09:00
Dean Herbert
0916ae1671 Add basic profiling output of realm migrations 2023-06-13 01:57:41 +09:00
Dean Herbert
0e9576acfb Remove logging and catch any kind of errors 2023-06-13 01:40:43 +09:00
Dean Herbert
d19f8997fc Account for scores which don't have correct maximum statistics populated 2023-06-13 01:40:43 +09:00
Dean Herbert
f30c1a564f Add basic setup for score migration 2023-06-13 01:40:43 +09:00
Bartłomiej Dach
11694f35fe
Apply NRT in MemoryCachingComponent subclasses too 2023-06-09 13:47:35 +02:00
Dean Herbert
4685ba83e1 Apply NRT to MemoryCachingComponent classes 2023-06-09 19:00:05 +09:00
Bartłomiej Dach
ca25ac446b
Be slightly more specific with error message 2023-06-09 11:20:12 +02:00
Dean Herbert
53f935714e Inline binary reading to avoid polluting RealmAccess with nested class 2023-06-09 17:34:27 +09:00
Dean Herbert
a9071e7afd try-catch more 2023-06-09 17:33:59 +09:00
Dan Balasescu
67562a3856 Catch errors during score parsing 2023-06-09 14:35:29 +09:00
Dan Balasescu
facf7de053 Parse ScoreInfo.IsLegacyScore from replays 2023-06-08 21:38:10 +09:00
Bartłomiej Dach
1f4e79d79d
Merge pull request #23711 from timiimit/add-last-edit-time
Store timestamp of beatmap's last edit time in local database
2023-06-07 16:57:24 +02:00
Salman Ahmed
62cb6a98ca Remove redundant nullable suppression directives 2023-06-07 08:20:41 +03:00
Dean Herbert
e0e013cca1
Fix incorrect realm schema comment
Co-authored-by: timiimit <32331609+timiimit@users.noreply.github.com>
2023-06-06 22:17:05 +09:00
Dean Herbert
878cdb2ed3 Bump schema version 2023-06-06 15:11:37 +09:00
Dean Herbert
18eb15bfa5 Gracefully handle failures in cleaning up pending file deletions 2023-05-31 19:39:43 +09:00
Bartłomiej Dach
2e81cae201
Move comment to more correct place 2023-05-30 23:18:34 +02:00
Dean Herbert
a0be526266 Adjust realm backup procedure to hard fail if running out of attempts
Previously, if the backup procedure failed, startup would continue and
the user's realm database may be deleted. I think in such a fail case
I'd rather the game didn't startup so the user gets in touch (or reads
the log files themselves) rather than potentially losing data.
2023-05-30 13:04:34 +09:00
Dean Herbert
79694897be Ensure a potential exception from cleanupPendingDeletions doesn't mark realm corrupt
The whole restructure here is to move the nested call out of the
`try-catch`. I noticed this while looking at a corrupt database issue a
user reported (https://github.com/ppy/osu/discussions/23694).

It's not the first time we've seen a corrupt database error where the
"corrupt" version works just fine on a second attempt.

Maybe this isn't the issue and it's just a transitive file access violation
but it definitely feels like this should be fixed regardless.
2023-05-30 13:00:17 +09:00
Dan Balasescu
d2380bd840 Remove usages of [ExcludeFromDynamicCompile] 2023-05-08 18:12:56 +09:00
Bartłomiej Dach
510484011c
Mark exporter extensions as untranslatable 2023-05-06 19:42:28 +02:00
Bartłomiej Dach
3f63fd7f4d
Reorder increment to make progress update less weird 2023-05-06 19:39:52 +02:00
Bartłomiej Dach
bb17b684b0
Rename flag 2023-05-06 19:38:41 +02:00
Bartłomiej Dach
a56a5d563c
Unify error message wording 2023-05-06 19:38:05 +02:00
Bartłomiej Dach
3afe198d1d
Remove weird single-use private method 2023-05-06 19:34:22 +02:00
Bartłomiej Dach
e0823ffd03
Move lower and xmldoc GetFilename(TModel) 2023-05-06 19:29:08 +02:00
Bartłomiej Dach
5e64d25b2a
Make UserFileStorage readonly again 2023-05-06 19:26:51 +02:00
Dean Herbert
64d7e0d896 Rename outputStream variable to match base class 2023-05-07 00:24:30 +09:00
Dean Herbert
d2591368a6 More xmldoc fixes 2023-05-06 23:53:35 +09:00
Dean Herbert
0d095c4bb7 Remove non-Live pathway 2023-05-06 23:10:18 +09:00
Dean Herbert
e75ff33d62 Remove redundant xmldoc and reword some remaining 2023-05-06 23:10:09 +09:00
cdwcgt
71864fbb93
remove meanless comment 2023-05-05 21:29:06 +09:00
cdwcgt
4393e53b43
ExportToStream should be public 2023-05-05 21:28:43 +09:00
Dean Herbert
747f912af5 Fix incorrect cancellation logic 2023-05-05 21:08:01 +09:00
Dean Herbert
5d78561aa3 Remove weird catch logic 2023-05-05 21:05:57 +09:00
Dean Herbert
2a3e03695c Simplify ExportAsync, remove weird dedupe logic and unnecessary return success code 2023-05-05 21:05:52 +09:00
Dean Herbert
4ccfebc02b Simplify ExportToStreamAsync implementation 2023-05-05 21:01:10 +09:00
Dean Herbert
fc2d2de34c Fix notification text not including export filename 2023-05-05 16:53:27 +09:00
Dean Herbert
9cafb20fcb Move file missing logging to a better location, and log actual filenames to logs 2023-05-05 16:53:16 +09:00
Dean Herbert
4ec98b0578 Improve xmldoc and fix silly progress text in LegacyArchiveExporter 2023-05-05 16:45:45 +09:00
Dean Herbert
0158102467 Rename class back to original name so I can read the diff 2023-05-05 16:19:10 +09:00
cdwcgt
dd69089117
code quality 2023-04-09 15:51:31 +09:00
cdwcgt
5d64c1b7bf
exception handling 2023-04-09 15:09:18 +09:00
cdwcgt
ce6a87b4a3
Merge remote-tracking branch 'upstream/master' into export 2023-04-09 15:02:47 +09:00
cdwcgt
fc55b96e77
remove CompletionText in Constructor
this will never used

Co-Authored-By: Dean Herbert <pe@ppy.sh>
2023-04-09 14:27:42 +09:00