Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Missing Methods and Implementations after v4.0. #402

Closed
wants to merge 47 commits into from

Conversation

YBTopaz8
Copy link
Member

Redid this PR and fixed conflicts
Code should be more reliable now 👍🏾

YBTopaz8 and others added 30 commits November 27, 2024 23:34
- Removed `xmlns:m` namespace declaration for `UraniumUI.Icons.MaterialSymbols` in `AppShell.xaml`.
- Replaced `ImageButton` with `Button` for delete button in `AppShell.xaml`.
- Updated `Tab` elements in `AppShell.xaml` to use image icons.
- Conditionally set database path in `DataBaseService.cs` based on `NET9_0`.
- Added `<AppxSymbolPackageEnabled>false</AppxSymbolPackageEnabled>` to `Dimmer-MAUI.csproj`.
- Added new property groups for configurations and target frameworks in `Dimmer-MAUI.csproj`.
- Changed active debug framework and profile to Windows in `Dimmer-MAUI.csproj.user`.
- Updated version in `Package.appxmanifest` from `0.4.0.0` to `0.5.0.0`.
- Updated publish settings in `MSIX-win-x64.pubxml` and `MSIX-win10-x86.pubxml`.
- Added new SVG and PNG icon files.
- Conditionally compile code for Android and Windows in various services and view models based on `NET9_0`.
- Updated `MediaPlaybackControlsView.xaml` to use new image sources and added triggers for shuffle state.
- Fixed issues in `SingleSongShellPageD.xaml.cs` and `SingleSongShell.xaml`.
- Updated `Parse.csproj` to support multiple target frameworks and added a conditional target framework for Windows.
- Added new publish profile `FolderProfile.pubxml`.
- Updated `Resources.Designer.cs` to use `StronglyTypedResourceBuilder` version "17.0.0.0".
- AppShell.xaml: Added TouchDownCommand, removed redundant elements.
- AppShell.xaml.cs: Made ToggleFlyout calls synchronous, added empty event handler.
- SongsManagementService.cs: Explicit constructor call for SongModel.
- Dimmer-MAUI.csproj: Changed RuntimeIdentifier to win10-x64.
- Dimmer-MAUI.csproj.user: Updated debug settings for Windows.
- GeneralStaticUtilities.cs: Added null check for item.FilePath.
- LyricsService.cs: Improved null handling, added .lrc parsing.
- ArtistsSection.HomePageVM.cs: Handled nullability, added partial methods.
- ArtistsPageD.xaml: Added DataTrigger for Label styling.
- ArtistsPageD.xaml.cs: Refactored ArtistView_TouchDown.
- DimmerWindow.xaml.cs: Updated version subtitle to v0.5.1.
- MainPageD.xaml: Added TouchDown event handler, simplified Image binding.
- MainPageD: Added isPointerEntered field, implemented PointerEntered method.
- SingleSongShellPageD.xaml: Updated IsAnimationPlaying, added SfChipGroup.
- SingleSongShellPageD.xaml.cs: Added chip click handler, debugging using directive.
- ArtistsPageM.xaml.cs: Removed async from ResetSongs_TapPressed, added background color changes.
- Added pragma directives to suppress warnings, added comments for refactoring.
Updated target frameworks and project references:
- `ParseLiveQuery.Test.csproj` to `v4.8`
- `ParseLiveQuery.csproj` to `net9.0`
- Removed `Parse` and `WebSocketSharp` references, added `System.Text.Json` and `websocketsharp.core`
- Updated `Parse.csproj` to use `OpenCover` v4.7.1221

Refactored `ParseLiveQueryClient.cs`:
- Switched to `System.Text.Json` for JSON parsing
- Added `_clientKey` field and updated constructor
- Updated methods to use `ParseClient.Instance` for various operations
- Adopted file-scoped namespace syntax

Updated other client operations:
- Replaced `Json.Encode` with `JsonSerializer.Serialize` in `SessionClientOperation.cs` and `UnsubscribeClientOperation.cs`
- Updated `SubscribeClientOperation.cs` to use `ParseClient.Instance.CreateObjectWithoutData<T>(null).ClassName`

Enhanced `ObjectServiceExtensions.cs`:
- Added validation and error handling in `GetFieldForPropertyName` method
- Included `System.Diagnostics` namespace

Updated Visual Studio solution:
- Made compatible with Visual Studio 17
- Removed `ParseLiveQuery.Test` project, added `Parse` project
Updated App.xaml.cs to initialize platform-specific shells and replaced Console.WriteLine with Debug.WriteLine. Enhanced AppShell.xaml and AppShellMobile.xaml with new tabs and routes. Expanded IFlowsService.cs with new methods for user accounts and synchronization. Renamed and refactored FlowService.cs with extensive updates for user authentication, data synchronization, and error handling. Added project references and updated FlowHub-MAUI.csproj and FlowHub-MAUI.sln. Refactored data models in FlowModel.cs and enhanced HomePageVM.cs with new properties and commands. Updated various XAML files for improved UI and data binding. Refactored multiple files in ParseLiveQuery to use file-scoped namespaces, improved formatting, and updated WebSocket implementation. Enhanced MutableObjectState, ParseObject, and related classes with new properties, error handling, and logging. Updated ParseUser.cs and service extensions for better user management.
The changes primarily involve refactoring methods to use block bodies instead of expression bodies across multiple files. This improves readability and maintainability by making the code more consistent and easier to debug.

Key changes include:
- Refactored methods in various files such as `HomePageVM.cs`, `ConnectClientOperation.cs`, `ParseLiveQueryClient.cs`, `CacheController.cs`, `ParseAddOperation.cs`, `ParseObjectCoder.cs`, `ParseCommandRunner.cs`, `ParseConfiguration.cs`, `ParseObject.cs`, `ParseQuery.cs`, `ParseUser.cs`, `ParseUserController.cs`, `AnalyticsServiceExtensions.cs`, `CloudCodeServiceExtensions.cs`, `ConfigurationServiceExtensions.cs`, `InstallationServiceExtensions.cs`, `ObjectServiceExtensions.cs`, `ParseExtensions.cs`, `ParseFileExtensions.cs`, `ParseQueryExtensions.cs`, `ParseRelationExtensions.cs`, `ParseUserExtensions.cs`, `PushServiceExtensions.cs`, `QueryServiceExtensions.cs`, `RoleServiceExtensions.cs`, `SessionsServiceExtensions.cs`, and `UserServiceExtensions.cs` to use block bodies.
- Added logging and debug statements in some files to track changes and improve clarity.
- Introduced hardcoded values for user credentials in `HomePageVM.cs` and added logging for user authentication status changes.
- Added null checks and validation logic in some methods to ensure robustness.
Upgraded to .NET 9 - MAUI
Refactored `ParseInstallation` to add `writeOnlyKeys` set and restrict deletion. Added `DeleteAsync` override to throw `InvalidOperationException` on delete attempts. Updated `OnSettingValue` to prevent setting `writeOnlyKeys` to null.

Refactored `ParseObjectClassController`:
- Changed from nested to top-level internal class.
- Moved properties (`ReservedParseObjectClassName`, `Mutex`, `Classes`, `RegisterActions`) out of nested class.
- Improved readability of methods (`GetClassName`, `GetType`, `GetClassMatch`, `AddValid`, `RemoveClass`, `AddRegisterHook`, `Instantiate`, `GetPropertyMappings`, `AddIntrinsic`).
- Enhanced `AddValid` for clearer type registration and error handling.
- Simplified `AddIntrinsic` for cleaner intrinsic type registration.
- All Currently Written tests are updated to test the latest code
- Parse previously targeted only .NET 9+, now it does .NET6+
- Did some "Todo" along the side.
- Ensured all tests while updated, still pass as intended.
- Sets base compatibility to .NET 5+ (versions 5, 6, 7, 8, 9), including support for .NET MAUI, ensuring broader platform compatibility.
- Enables compatibility for Live Queries with the updated base compatibility.
- Completed most, if not all, TODOs, including implementing additional unit tests to cover newly introduced concepts.
- Finalized remaining TODOs and ensured all functionality is thoroughly tested.
- Parse Should now work as expected on every single front (only missing piece was correct data decoding. Handled now)

Updated Parse LQ to v2.0
Now Using RX.NET instead of subs (will polish more with time)

Sample LiveChat example has been fully updated with how to use methods.
Will update again to provide examples in more robust situations where ReactiveX and LINQ is a step up against other platforms. (You can now combine subs and get notified only when even more sub specific conditions are fulfilled)
Simplified target frameworks to net8.0 in project files.
Updated exception type in SessionControllerTests.
Removed exception handling in ParseDataDecoder's Decode method making previous UT fail.
LogOutAsync UT will fail, but only because I could not mock it properly for testing despite it working.
Handled HTTP 410 status code in ParseCommandRunner.
mtrezza and others added 13 commits December 13, 2024 16:36
It used to freeze app before but doesn't now.
- SignUpAsync now returns the Signed up user after completion
- Renamed LoginAsync() to LoginWithAsync() and SignUpAsync() to SignUpWithAsync().
- Finished removing old codes.
- Possibily fixed all OLD Unity issues.
- Fixed an issue where logging out WILL logout but the test failed.
- Fixed issues where Parse Relations/Pointers never worked after v4.0 (incomplete decoding)
- Added about 70+ tests to help improve code coverage at least in the very critical part.

Code should be more reliable now 👍🏾
Copy link

Thanks for opening this pull request!

  • ❌ Please link an issue that describes the reason for this pull request, otherwise your pull request will be closed. Make sure to write it as Closes: #123 in the PR description, so I can recognize it.

@YBTopaz8
Copy link
Member Author

YBTopaz8 commented Dec 21, 2024

Here I would either have to add .net7, 8 and 9 in parse and test or you would remove them from checks.
(we had the conversation before and concluded with me going with .net 6 only as seen in v4 release I was mistaken!)

@mtrezza
Copy link
Member

mtrezza commented Dec 21, 2024

Amazing work! Could you please split this PR into individual PRs that are scoped to a single issue? Essentially a PR for each of the points that you outlined in #402 (comment). Please see here why.

@YBTopaz8
Copy link
Member Author

Still passing
image

@YBTopaz8
Copy link
Member Author

YBTopaz8 commented Dec 23, 2024

I will close this PR myself afterall.
Sometimes tests that used to passed will fail without even changing the code, restarting VS or the PC might solve, sometimes might not - so this is not encouraging.

Whenever I post a commit along with my own passes then I see it fails here, I have to figure out, making me break stuff.

PRs #403 and #404 are all good.

This PR truly, simply adds more tests for coverage as I wanted to help on that end too.
If 404 is approved, I would consider doing another PR just for test coverage. Or I might not. Possibly might not in a long time

@YBTopaz8 YBTopaz8 closed this Dec 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Missing methods in Parse .NET SDK 4.0 Parse.ParseUser.LogOutAsync test fails
2 participants