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

fix: crash fix plus minor changes to required package versions #161

Merged
merged 128 commits into from
Dec 15, 2024

Conversation

FreakyAli
Copy link
Owner

@FreakyAli FreakyAli commented Dec 15, 2024

Summary by CodeRabbit

  • New Features

    • Introduced FreakyEntryHandler for enhanced entry handling.
    • Added error handling to various controls, improving stability.
  • Bug Fixes

    • Enhanced loading state management in FreakyTextInputLayout to prevent premature transitions.
  • Chores

    • Updated project structure and versioning in Maui.FreakyControls.csproj and Samples.csproj.
    • Upgraded package references for improved functionality and compatibility.

Gulam Ali Hakim and others added 30 commits September 30, 2022 06:51
- updated readme with BMAC
- Wiki configured and now control details are moved to the Wiki.
…id build errors (#11)

* fix: starter commit

* Update README.md

* Update README.md

* fix: fixed build errors if apps target maccatalyst and windows

* Update README.md

updated readme + added headers

* Update README.md

* feat: Signature view basic  setup

* fix: compelete setup for a signature view

* Create issues.md

Template for issues

* feat: A fully setup SignatureView that can help you create signature's + better sample

* fix: code cleanup

* feat: SignatureView is a readySignatureView

* chore: code clesn up

* Delete issues.md

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>
* fix: memory leak fixes

* fix: code clean up for signaturePadview

* fix: files moved to helper

* fix: events moved post ctor

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>
* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls
* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* chore: code cleanup

* fix: changes to signatureview

* fix: clear icon instead of label

* fix: ui changes for signature view

* fix: updated clear icon

* fix:SignatureView is optimized and cleaned up

* chore: updated readme.md

* Update README.md

updated license in readme

* fix: signature view now has better documentation

* fix: signature view now has better documentation

* fix: better positioming for clear icon
* fix: icon fix for nupkg

* Update README.md

- Added SignatureView for iOS

* Update README.md

fix: added screenshots for all controls :)

* Update README.md

updated the readme

* Update README.md

a better readme in general :)

* Update README.md
* feat: merging new features to master (#14)

* feat: Freaky image is in town :)

* feat: Picker, DatePicker and Timepicker just got Freaky :D

* fix: handled some warnings

* feat: some changes to our files :)

* fix: TIL

* feat: TextInputLayout now has an outlined option :)

* fix: removed unwanted parts of the code

* fix: background color is now transparent for entry view

* feat: freaky image added for descriptions

* feat: final update for your freaky controls

* Update README.md

- updated readme with BMAC

* Update README.md

- Wiki configured and now control details are moved to the Wiki.

* fix: more information on properties

* feat: A UI for signatures + Handlers for unsupported platforms to avoid build errors  (#11)

* fix: starter commit

* Update README.md

* Update README.md

* fix: fixed build errors if apps target maccatalyst and windows

* Update README.md

updated readme + added headers

* Update README.md

* feat: Signature view basic  setup

* fix: compelete setup for a signature view

* Create issues.md

Template for issues

* feat: A fully setup SignatureView that can help you create signature's + better sample

* fix: code cleanup

* feat: SignatureView is a readySignatureView

* chore: code clesn up

* Delete issues.md

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* fix: code clean up and other fixes for performance (#16)

* fix: memory leak fixes

* fix: code clean up for signaturePadview

* fix: files moved to helper

* fix: events moved post ctor

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* fix: Circular Image now comes from our control. (#17)

* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* fix: code clean up and updates (#18)

* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* chore: code cleanup

* fix: changes to signatureview

* fix: clear icon instead of label

* fix: ui changes for signature view

* fix: updated clear icon

* fix:SignatureView is optimized and cleaned up

* chore: updated readme.md

* Update README.md

updated license in readme

* fix: signature view now has better documentation

* fix: signature view now has better documentation

* fix: better positioming for clear icon

* chore: setup for 0.3 (#19)

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* Update Maui.FreakyControls.csproj

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>
* fix: better visuals for readme and other changes (#22)

* feat: Freaky image is in town :)

* feat: Picker, DatePicker and Timepicker just got Freaky :D

* fix: handled some warnings

* feat: some changes to our files :)

* fix: TIL

* feat: TextInputLayout now has an outlined option :)

* fix: removed unwanted parts of the code

* fix: background color is now transparent for entry view

* feat: freaky image added for descriptions

* feat: final update for your freaky controls

* Update README.md

- updated readme with BMAC

* Update README.md

- Wiki configured and now control details are moved to the Wiki.

* fix: more information on properties

* feat: A UI for signatures + Handlers for unsupported platforms to avoid build errors  (#11)

* fix: starter commit

* Update README.md

* Update README.md

* fix: fixed build errors if apps target maccatalyst and windows

* Update README.md

updated readme + added headers

* Update README.md

* feat: Signature view basic  setup

* fix: compelete setup for a signature view

* Create issues.md

Template for issues

* feat: A fully setup SignatureView that can help you create signature's + better sample

* fix: code cleanup

* feat: SignatureView is a readySignatureView

* chore: code clesn up

* Delete issues.md

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* fix: code clean up and other fixes for performance (#16)

* fix: memory leak fixes

* fix: code clean up for signaturePadview

* fix: files moved to helper

* fix: events moved post ctor

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* fix: Circular Image now comes from our control. (#17)

* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* fix: code clean up and updates (#18)

* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* chore: code cleanup

* fix: changes to signatureview

* fix: clear icon instead of label

* fix: ui changes for signature view

* fix: updated clear icon

* fix:SignatureView is optimized and cleaned up

* chore: updated readme.md

* Update README.md

updated license in readme

* fix: signature view now has better documentation

* fix: signature view now has better documentation

* fix: better positioming for clear icon

* chore: setup for 0.3 (#19)

* fix: fix for nupkg and readme now has gifs (#20)

* fix: icon fix for nupkg

* Update README.md

- Added SignatureView for iOS

* Update README.md

fix: added screenshots for all controls :)

* Update README.md

updated the readme

* Update README.md

a better readme in general :)

* Update README.md

* fix: updated readme for better visual effects (#21)

* feat: merging new features to master (#14)

* feat: Freaky image is in town :)

* feat: Picker, DatePicker and Timepicker just got Freaky :D

* fix: handled some warnings

* feat: some changes to our files :)

* fix: TIL

* feat: TextInputLayout now has an outlined option :)

* fix: removed unwanted parts of the code

* fix: background color is now transparent for entry view

* feat: freaky image added for descriptions

* feat: final update for your freaky controls

* Update README.md

- updated readme with BMAC

* Update README.md

- Wiki configured and now control details are moved to the Wiki.

* fix: more information on properties

* feat: A UI for signatures + Handlers for unsupported platforms to avoid build errors  (#11)

* fix: starter commit

* Update README.md

* Update README.md

* fix: fixed build errors if apps target maccatalyst and windows

* Update README.md

updated readme + added headers

* Update README.md

* feat: Signature view basic  setup

* fix: compelete setup for a signature view

* Create issues.md

Template for issues

* feat: A fully setup SignatureView that can help you create signature's + better sample

* fix: code cleanup

* feat: SignatureView is a readySignatureView

* chore: code clesn up

* Delete issues.md

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* fix: code clean up and other fixes for performance (#16)

* fix: memory leak fixes

* fix: code clean up for signaturePadview

* fix: files moved to helper

* fix: events moved post ctor

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* fix: Circular Image now comes from our control. (#17)

* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* fix: code clean up and updates (#18)

* fix: Circular Image now inherits from our Image control

* fix: update changes for some controls

* chore: code cleanup

* fix: changes to signatureview

* fix: clear icon instead of label

* fix: ui changes for signature view

* fix: updated clear icon

* fix:SignatureView is optimized and cleaned up

* chore: updated readme.md

* Update README.md

updated license in readme

* fix: signature view now has better documentation

* fix: signature view now has better documentation

* fix: better positioming for clear icon

* chore: setup for 0.3 (#19)

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* Update Maui.FreakyControls.csproj

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>

* chore: feature request template

Co-authored-by: Gulam Ali Hakim <jimtiyg@Gulams-MacBook-Pro.local>
* feat:support for .net7

* fix: updated samples
* fix: basic freaky checkbox is here

* fix: checkbox handler

* fix: issue with TIL background color now works

* feat: Hello Checkbox

* feat: Freaky checkbox is ready to rule

* fix: bug fixes and code clean up

* fix: design issues and more

* Update README.md

fix: added checkbox images to readme
FreakyAli and others added 23 commits February 25, 2024 17:32
* fix: clean up and invalidate for SvgImageView

* fix: rewrote freaky entry to have better image and focus performance

* fix: code clean up and more

* fix: code clean up and some packages downgraded

* fix: removed unneccesary try-catch

* fix: clean up

* fix: converters updated

* fix: clean up

* fix: added events to freakypincodecontrol
- Added ability for layout to handle numeric fontsize values
- Added new TitleFontSize property so user can change the size of the floating label
- Fixed floating label positioning for various TitleFontSizes
- Fixed margins for Bordered input type so the floating label doesn't overlap with a control above it
)

Fix FreakyTextInputLayout title position when focused on app start

Co-authored-by: e071324 <Danny.Neumann@odfl.com>
* Fix crash when switching the app's theme between dark/light modes

Fix crash when switching the app's theme between dark/light modes

* Fix crash when switching the app's theme between dark/light modes

Fix crash when switching the app's theme between dark/light modes

* Fix app theme change crash for picker and datepicker

Fix app theme change crash for picker and datepicker

---------

Co-authored-by: e071324 <Danny.Neumann@odfl.com>
…159)

* fix: version 0.5.0 is here with some updates (#137)

* fix: proj file clean up

* feat: Release CI-CD for ease of release (#149)

* feat: Release CI-CD for ease of release

* fix: ci for packages

* fix: quick fix for command FreakyPicker.cs

* fix: vulnerability changes for SkiaSharp

* Update main_cd.yml (#150)

* Update main_cd.yml (#151)

* Update main_cd.yml (#152)
* by removing an extra copy of FreakyZoomableView
…minimum levels (#160)

Co-authored-by: Hakim Gulam Ali <hakimgulamali@Hakims-MacBook-Pro.local>
Copy link

coderabbitai bot commented Dec 15, 2024

Warning

Rate limit exceeded

@FreakyAli has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 11 minutes and 37 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between cffe47e and 241a6be.

📒 Files selected for processing (1)
  • MAUI.FreakyControls/MAUI.FreakyControls/Maui.FreakyControls.csproj (3 hunks)

Walkthrough

This pull request introduces several enhancements to the MAUI.FreakyControls library, focusing on error handling, project structure reorganization, and dependency updates. The changes span multiple handler classes like FreakyDatePicker, FreakyEditor, and FreakyPicker, where try-catch blocks have been added to improve exception management. A new FreakyEntryHandler was introduced, and the project's version was bumped to 0.5.0-pre. Dependency versions for key packages like Microsoft.Maui.Controls and SkiaSharp were also upgraded.

Changes

File Change Summary
FreakyDatePickerHandler.cs Added try-catch block in MapDatePicker method for error handling
FreakyEditorHandler.cs Introduced try-catch block in MapFreakyEditor method
FreakyEntryHandler.cs New handler class added with mapping logic and error handling
FreakyPickerHandler.cs Added try-catch block in MapPicker method
FreakyTextInputLayout.xaml.cs Added _isLoading field, updated focus and transition logic
Maui.FreakyControls.csproj Version bumped to 0.5.0-pre, package references updated
Samples.csproj Package references updated to newer versions

Poem

🐰 A Rabbit's Ode to Code Refinement 🛠️

Handlers wrapped in try-catch's embrace,
Errors caught with algorithmic grace.
Version numbers dance and climb,
Dependencies aligned in perfect time.
Hop along, code rabbit, with glee! 🚀


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments.

🛑 Comments failed to post (19)
MAUI.FreakyControls/MAUI.FreakyControls/FreakyEditor/FreakyEditorHandler.cs (2)

14-25: 💡 Codebase verification

Empty catch blocks found in multiple handlers - potential issue

Similar empty catch blocks were found in multiple handler classes:

  • FreakyEntryHandler.cs
  • FreakyEditorHandler.cs
  • FreakyDatePickerHandler.cs
  • FreakyPickerHandler.cs

All these handlers follow the same pattern of silently swallowing exceptions with empty catch blocks, which could hide important errors and make debugging difficult. While this may temporarily fix crashes, it's not a recommended practice as it can mask underlying issues.

🔗 Analysis chain

Verify similar exception handling patterns

The PR title suggests this is a crash fix. Let's verify if similar empty catch blocks were added to other handlers, as mentioned in the summary.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for potentially problematic empty catch blocks in handlers
echo "Searching for empty catch blocks in handlers..."
rg -U "catch\s*\([^)]*\)\s*{\s*}" --type cs

# Search for the broader pattern of exception handling in handlers
echo "Checking exception handling patterns in handlers..."
ast-grep --pattern 'try {
  $$$
} catch (Exception) {
  $$$
}'

Length of output: 7093


25-25: ⚠️ Potential issue

Empty catch block is masking potential issues

While adding exception handling aligns with the crash fix objective, silently catching all exceptions without logging or handling them is an anti-pattern that could:

  • Hide serious issues making debugging difficult
  • Mask underlying problems that should be addressed
  • Lead to unexpected behavior without any indication of failure

Consider this improvement:

-        catch(Exception) { }
+        catch(Exception ex)
+        {
+            System.Diagnostics.Debug.WriteLine($"FreakyEditor customization failed: {ex.Message}");
+            // Consider logging to your app's logging system
+            // Consider handling specific exceptions differently
+        }

Committable suggestion skipped: line range outside the PR's diff.

MAUI.FreakyControls/MAUI.FreakyControls/Platforms/iOS/FreakyPickerHandler.ios.cs (1)

3-3: 💡 Codebase verification

Update namespace references in documentation files

The namespace change from Maui.FreakyControls.Shared.Enums to Maui.FreakyControls.Enums has been consistently implemented across all source code files. However, there are still old namespace references in documentation files:

  • README.md: Contains both old and new namespace references
  • MAUI.FreakyControls/MAUI.FreakyControls/readme.md: Contains both old and new namespace references
🔗 Analysis chain

Verify namespace change consistency across the codebase

The namespace change from Maui.FreakyControls.Shared.Enums to Maui.FreakyControls.Enums is part of the broader restructuring mentioned in the PR summary.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that all references to the old namespace have been updated
# and no references to the old namespace remain.

echo "Checking for any remaining references to the old namespace..."
rg "Maui\.FreakyControls\.Shared\.Enums" 

echo "Verifying the new namespace is consistently used..."
rg "Maui\.FreakyControls\.Enums"

Length of output: 6154

MAUI.FreakyControls/MAUI.FreakyControls/FreakyDatePicker/FreakyDatePickerHandler.cs (1)

16-30: ⚠️ Potential issue

Empty catch block needs proper error handling

While adding exception handling is good, silently catching all exceptions without logging or proper error handling is dangerous. This can mask serious issues and make debugging extremely difficult.

Consider this improvement:

    try
    {
        if (datePicker is FreakyDatePicker freakyDatePicker &&
                 datePickerHandler is FreakyDatePickerHandler freakyDatePickerHandler)
        {
            if (PlatformView is not null && VirtualView is not null)
            {
                if (freakyDatePicker.ImageSource != default(ImageSource))
                {
                    freakyDatePickerHandler.HandleAndAlignImageSourceAsync(freakyDatePicker).RunConcurrently();
                }
            }
        }
    }
-   catch (Exception) { }
+   catch (Exception ex)
+   {
+       System.Diagnostics.Debug.WriteLine($"Error in MapDatePicker: {ex.Message}");
+       // Consider using a proper logging framework or error reporting service
+       // Also consider which specific exceptions should be caught
+   }

Committable suggestion skipped: line range outside the PR's diff.

MAUI.FreakyControls/MAUI.FreakyControls/FreakyPicker/FreakyPickerHandler.cs (3)

30-30: ⚠️ Potential issue

Empty catch block may hide critical errors.

The empty catch block silently swallows all exceptions, which could mask important issues and make debugging difficult. Consider at least logging the exception or handling specific exception types.

Here's a suggested improvement:

- catch (Exception) { }
+ catch (Exception ex)
+ {
+     System.Diagnostics.Debug.WriteLine($"Error in FreakyPicker mapping: {ex.Message}");
+     // Consider re-throwing if this is a critical error
+ }

Committable suggestion skipped: line range outside the PR's diff.


16-30: 🛠️ Refactor suggestion

Consider more specific exception handling.

The current try-catch block catches all exceptions indiscriminately. It would be better to catch specific exceptions that we expect might occur during image handling.

Here's a suggested improvement:

try
{
    // ... existing code ...
}
- catch (Exception) { }
+ catch (InvalidOperationException ex)
+ {
+     System.Diagnostics.Debug.WriteLine($"Invalid operation in FreakyPicker: {ex.Message}");
+ }
+ catch (ArgumentException ex)
+ {
+     System.Diagnostics.Debug.WriteLine($"Invalid argument in FreakyPicker: {ex.Message}");
+ }

Committable suggestion skipped: line range outside the PR's diff.


25-25: 💡 Codebase verification

⚠️ Potential issue

Fire-and-forget pattern detected with potential error handling issues

The RunConcurrently extension method is problematic as it:

  1. Only starts the task if not started, but doesn't await its completion
  2. Doesn't handle or propagate any exceptions that occur during task execution
  3. Doesn't provide any way to track task completion or failures

The HandleAndAlignImageSourceAsync performs important UI operations like loading and aligning images, and its errors should be properly handled. Using RunConcurrently here means:

  • Image loading failures will be silently ignored
  • UI might be in an inconsistent state if the operation fails
  • Memory leaks could occur if the operation throws an exception

Consider using proper async/await pattern:

- freakyTimePickerHandler.HandleAndAlignImageSourceAsync(freakyTimePicker).RunConcurrently();
+ await freakyTimePickerHandler.HandleAndAlignImageSourceAsync(freakyTimePicker);
🔗 Analysis chain

Review the use of RunConcurrently with async operations.

The HandleAndAlignImageSourceAsync is an async method being called with .RunConcurrently(). This pattern might lead to fire-and-forget scenarios where errors are not properly propagated and the operation's completion is not awaited.

Let's check the implementation of HandleAndAlignImageSourceAsync:

Consider using proper async/await pattern:

- freakyTimePickerHandler.HandleAndAlignImageSourceAsync(freakyTimePicker).RunConcurrently();
+ await freakyTimePickerHandler.HandleAndAlignImageSourceAsync(freakyTimePicker);
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for HandleAndAlignImageSourceAsync implementation
ast-grep --pattern 'HandleAndAlignImageSourceAsync($$$) {
  $$$
}'

Length of output: 68


Script:

#!/bin/bash
# Let's try a broader search for HandleAndAlignImageSourceAsync
rg -l "HandleAndAlignImageSourceAsync" 

# Then look for RunConcurrently implementation
rg -l "RunConcurrently"

# And get the content of files containing these methods
rg "HandleAndAlignImageSourceAsync|RunConcurrently" -A 5

Length of output: 13481


Script:

#!/bin/bash
# Let's check the implementation of RunConcurrently to understand how it handles errors
cat MAUI.FreakyControls/MAUI.FreakyControls/Extensions/TaskExtensions.cs

Length of output: 2723

MAUI.FreakyControls/MAUI.FreakyControls/FreakyPicker/FreakyPicker.cs (2)

1-1: 💡 Codebase verification

Update documentation to reflect namespace changes

The namespace change from Shared.Enums to Enums has been properly implemented across all code files. However, there are still references to the old namespace Maui.FreakyControls.Shared.Enums in documentation files:

  • README.md
  • MAUI.FreakyControls/MAUI.FreakyControls/readme.md

Please update these documentation files to reflect the new namespace structure.

🔗 Analysis chain

Verify namespace change impact across the project

The namespace change from Shared.Enums to Enums is part of the broader restructuring. Let's verify that all references have been updated correctly.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining references to the old namespace
rg "Maui\.FreakyControls\.Shared\.Enums" -l

# Search for references to the new namespace to confirm proper migration
rg "Maui\.FreakyControls\.Enums" -l

Length of output: 4048


39-42: 💡 Codebase verification

Additional fixes needed for ImageCommand property in other controls

The verification revealed that while the FreakyPicker has the correct ImageCommand property name, several other controls in the codebase still have the same naming issue:

  • FreakyTimePicker: Using nameof(ImagePadding) for ImageCommandProperty
  • FreakyEntry: Using nameof(ImagePadding) for ImageCommandProperty
  • FreakyDatePicker: Using nameof(ImagePadding) for ImageCommandProperty
  • FreakyAutoCompleteView: Using nameof(ImagePadding) for ImageCommandProperty

These controls need similar fixes to prevent potential binding crashes, as they incorrectly use ImagePadding in their ImageCommand property declarations while the XAML bindings use ImageCommand.

🔗 Analysis chain

LGTM! Property name correction fixes potential crash

The correction of the property name from ImagePadding to ImageCommand in the bindable property declaration aligns with its actual usage and should resolve any binding-related crashes. The implementation follows the correct MAUI patterns.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining references to potentially mismatched property names
rg "ImagePadding.*ImageCommand|ImageCommand.*ImagePadding" -A 5 -B 5

# Look for any usage examples or tests to verify the fix
fd -e xaml -e cs -x rg "ImageCommand=" {} -l

Length of output: 391


Script:

#!/bin/bash
# Let's check the actual content of files that use ImageCommand
echo "=== TextInputLayoutView.xaml ==="
cat "./MAUI.FreakyControls/Samples/TextInputLayout/TextInputLayoutView.xaml"

echo -e "\n=== PickersView.xaml ==="
cat "./MAUI.FreakyControls/Samples/Pickers/PickersView.xaml"

echo -e "\n=== Looking for ImageCommand property definition ==="
rg "public\s+static\s+.*ImageCommand" -A 3

# Check for any remaining ImagePadding references
echo -e "\n=== Checking for any ImagePadding references ==="
rg "ImagePadding"

Length of output: 21410

MAUI.FreakyControls/MAUI.FreakyControls/Platforms/iOS/FreakyAutoCompleteViewHandler.ios.cs (1)

4-4: 💡 Codebase verification

Update namespace references in enum files

The verification reveals that several enum files (including ImageAlignment.cs) still contain references to the old namespace Maui.FreakyControls.Shared.Enums. These files need to be updated to use the new namespace structure as documented in the breaking changes.

  • Files requiring namespace updates:
    • MAUI.FreakyControls/MAUI.FreakyControls/Enums/TextChangeReason.cs
    • MAUI.FreakyControls/MAUI.FreakyControls/Enums/ImageAlignment.cs
    • And 11 other enum files in the Enums directory
🔗 Analysis chain

Verify enum references after namespace restructuring.

The namespace change from Maui.FreakyControls.Shared.Enums to Maui.FreakyControls.Enums aligns with the project restructuring. Let's verify that all enum references are correctly maintained.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that all enum types are accessible from the new namespace
# and that there are no lingering references to the old namespace

# Check for any remaining references to the old namespace
rg -l "Maui\.FreakyControls\.Shared\.Enums"

# Find all enum usages in the file to verify they're properly resolved
ast-grep --pattern 'enum $enumName {
  $$$
}'

Length of output: 153


Script:

#!/bin/bash
# Let's check the actual content of these readme files to understand if they're just documentation
# that needs updating or if there are code examples
cat README.md MAUI.FreakyControls/MAUI.FreakyControls/readme.md

# Let's also check for actual enum usage in the iOS handler file
rg -A 2 "ImageAlignment|AutoCompleteStyle|BorderStyle" "MAUI.FreakyControls/MAUI.FreakyControls/Platforms/iOS/FreakyAutoCompleteViewHandler.ios.cs"

Length of output: 9233


Script:

#!/bin/bash
# Let's verify the enum definition location and its usage
# First, find the enum definition
ast-grep --pattern 'enum ImageAlignment {
  $$$
}'

# Check if the enum is properly defined in the new namespace
rg -l "namespace Maui\.FreakyControls\.Enums"

# Check for any compilation units using the old namespace
rg "using Maui\.FreakyControls\.Shared\.Enums" --type cs

Length of output: 957

MAUI.FreakyControls/MAUI.FreakyControls/Platforms/iOS/NativeControls/Signature/SignaturePadCanvasView.cs (1)

5-6: 🛠️ Refactor suggestion

Consider implementing IDisposable pattern.

The GetImageStreamInternal method creates streams but doesn't handle their disposal in case of errors. This could lead to memory leaks.

Consider wrapping the stream creation in a try-catch block and implementing IDisposable:

 private Task<Stream> GetImageStreamInternal(SignatureImageFormat format, NativeSize scale, NativeRect signatureBounds, NativeSize imageSize, float strokeWidth, NativeColor strokeColor, NativeColor backgroundColor)
 {
+    MemoryStream stream = null;
+    try {
         if (format == SignatureImageFormat.Jpeg)
         {
             return Task.Run(() => image.AsJPEG().AsStream());
         }
         else if (format == SignatureImageFormat.Png)
         {
             return Task.Run(() => image.AsPNG().AsStream());
         }
+    }
+    catch (Exception)
+    {
+        stream?.Dispose();
+        throw;
+    }
     return Task.FromResult<Stream>(null);
 }

Also applies to: 19-24

MAUI.FreakyControls/MAUI.FreakyControls/FreakySwitch/FreakySwitch.cs (3)

39-66: 🛠️ Refactor suggestion

Consider using MAUI's built-in animation framework for smoother performance

The custom animation loop using Task.Delay may lead to less efficient performance and potential UI thread blocking. Consider utilizing MAUI's built-in animation APIs, such as ViewExtensions.Animate, to handle animations more efficiently and smoothly.

Here's an example of how you might refactor the AnimateThumbAsync method:

-private async Task AnimateThumbAsync()
-{
-    if (isAnimating)
-        return;
-
-    isAnimating = true;
-    animationProgress = 0.0f;
-
-    const double totalDuration = 250; // Duration in milliseconds
-
-    await this.AnimateAsync("ThumbAnimation", progress =>
-    {
-        animationProgress = (float)progress;
-        skiaView.InvalidateSurface();
-    }, length: (uint)totalDuration);
-
-    isAnimating = false;
-}
+private void AnimateThumb()
+{
+    if (isAnimating)
+        return;
+
+    isAnimating = true;
+
+    this.Animate("ThumbAnimation", progress =>
+    {
+        animationProgress = (float)progress;
+        skiaView.InvalidateSurface();
+    },
+    finished: (value, cancelled) =>
+    {
+        isAnimating = false;
+    });
+}

This refactor leverages MAUI's animation capabilities, which handle timing and UI updates more effectively.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    private void AnimateThumb()
    {
        if (isAnimating)
            return;

        isAnimating = true;

        this.Animate("ThumbAnimation", progress =>
        {
            animationProgress = (float)progress;
            skiaView.InvalidateSurface();
        },
        finished: (value, cancelled) =>
        {
            isAnimating = false;
        });
    }

77-123: ⚠️ Potential issue

Ensure consistent thumb color between On and Off states during animation

In the DrawAnimatingState method, the thumb color is set to ThumbOnColor in both the On and Off animations. This might cause visual inconsistency when transitioning from Off to On state. Use ThumbOffColor when animating from Off to On.

Apply this diff to adjust the thumb color:

// In the 'else' block when IsToggled is false
-    Color = ThumbOnColor.ToSKColor(),
+    Color = ThumbOffColor.ToSKColor(),
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    private void DrawAnimatingState(SKCanvas canvas, SKRect bounds)
    {
        // Draw background with OnColor
        var backgroundPaint = new SKPaint
        {
            Color = OnColor.ToSKColor(),
            IsAntialias = true
        };

        canvas.DrawRoundRect(bounds, bounds.Height / 2, bounds.Height / 2, backgroundPaint);

        if (IsToggled)
        {
            var thumbWidth = bounds.Height * 0.8f;
            var thumbLeftOff = bounds.Left + (bounds.Height * 0.1f); // 10% padding
            var thumbLeftOn = bounds.Right - thumbWidth - (bounds.Height * 0.1f);
            var thumbLeft = thumbLeftOn - ((thumbLeftOn - thumbLeftOff) * animationProgress);
            var thumbTop = bounds.Top + ((bounds.Height - thumbWidth) / 2);
            var thumbRect = SKRect.Create(thumbLeft, thumbTop, thumbWidth, thumbWidth);

            // Draw the switch thumb
            var thumbPaint = new SKPaint
            {
                Color = ThumbOnColor.ToSKColor(),
                IsAntialias = true
            };
            canvas.DrawRoundRect(thumbRect, thumbWidth / 2, thumbWidth / 2, thumbPaint); // Maintain circular shape
        }
        else
        {
            // Calculate thumb position based on animation progress
            var thumbWidth = bounds.Height * 0.8f;
            var thumbLeftOff = bounds.Left + (bounds.Height * 0.1f); // 10% padding
            var thumbLeftOn = bounds.Right - thumbWidth - (bounds.Height * 0.1f);
            var thumbLeft = thumbLeftOff + ((thumbLeftOn - thumbLeftOff) * animationProgress);
            var thumbTop = bounds.Top + ((bounds.Height - thumbWidth) / 2);
            var thumbRect = SKRect.Create(thumbLeft, thumbTop, thumbWidth, thumbWidth);

            // Draw the switch thumb
            var thumbPaint = new SKPaint
            {
                Color = ThumbOffColor.ToSKColor(),
                IsAntialias = true
            };
            canvas.DrawRoundRect(thumbRect, thumbWidth / 2, thumbWidth / 2, thumbPaint); // Maintain circular shape
        }
    }

68-72: ⚠️ Potential issue

Change 'async void' to 'async Task' to prevent unhandled exceptions

Using async void is discouraged because exceptions thrown in these methods cannot be caught and may crash the application. Change the SwitchTapped method signature to return a Task instead.

Apply this diff to fix the method signature:

-private async void SwitchTapped(object sender, EventArgs e)
+private async Task SwitchTapped(object sender, EventArgs e)

Also, ensure the event handler is updated accordingly.

Committable suggestion skipped: line range outside the PR's diff.

.github/workflows/main_ci.yml (1)

10-10: ⚠️ Potential issue

Remove Trailing Spaces

Line 10 contains trailing spaces, which may cause issues with YAML parsing or workflows execution.

Apply this diff to remove the trailing spaces:

-  
+
MAUI.FreakyControls/MAUI.FreakyControls/FreakyEntry/FreakyEntryHandler.cs (1)

17-32: ⚠️ Potential issue

Handle Exceptions Appropriately in Catch Block

The catch block at line 31 is empty, which can suppress exceptions and make debugging difficult. It's important to handle exceptions properly or log them for troubleshooting.

Apply this diff to handle the exception:

-        catch (Exception) { }
+        catch (Exception ex)
+        {
+            // Consider logging the exception or handling it appropriately
+            Console.WriteLine($"An error occurred: {ex.Message}");
+        }
.github/workflows/main_cd.yml (1)

10-10: ⚠️ Potential issue

Remove Trailing Spaces

Line 10 contains trailing spaces, which may lead to issues with the YAML parser or workflow execution.

Apply this diff to eliminate the trailing spaces:

-  
+
🧰 Tools
🪛 yamllint (1.35.1)

[error] 10-10: trailing spaces

(trailing-spaces)

MAUI.FreakyControls/Samples/Samples.csproj (1)

90-91: 💡 Codebase verification

Version mismatch detected between projects

The MAUI packages have inconsistent versions across the solution:

  • Samples project: 8.0.100
  • MAUI.FreakyControls project: 8.0.82

This version mismatch could lead to compatibility issues. All MAUI-related packages should be aligned to the same version across the solution to ensure consistent behavior.

🔗 Analysis chain

Verify compatibility with MAUI 8.0.100

The update from 8.0.40 to 8.0.100 is significant. Please ensure:

  1. All MAUI-related packages are updated consistently
  2. The app has been tested with the new version
  3. Breaking changes have been addressed
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining old versions
rg -l "8\.0\.40" --type-add 'proj:*.{csproj,props,targets}' -t proj

# Check for version inconsistencies in MAUI packages
rg "Microsoft\.Maui\." --type-add 'proj:*.{csproj,props,targets}' -t proj -A 1

Length of output: 837

README.md (1)

32-40: 🛠️ Refactor suggestion

Add alt text to images for better accessibility

The preview images lack alt text, which is important for accessibility and SEO.

Add descriptive alt text to each image. For example:

-| <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/ad3e28df-6b94-4eb1-92c7-f4731c28a438" width="250" height="550"/> |
+| <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/ad3e28df-6b94-4eb1-92c7-f4731c28a438" width="250" height="550" alt="iOS control preview"/> |

Apply similar changes to all images in the table.

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 LanguageTool

[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...da36abf33" width="250" height="550"/> | <img width="250" height="550" src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/825de592-e70c-48eb-a1d0...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...59da5c518" width="250" height="550"/> | <img width="250" height="550" src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/3a16dec7-2569-4fe6-bd86...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~35-~35: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e23924c6b" width="250" height="550"/> | <img width="250" height="550" src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/199bf72d-fc6b-46cf-8c1b...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~36-~36: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f523bc63e" width="250" height="550"/> | <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/30baab9e-cdb7-41b6-a33b...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~37-~37: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...821d41a2c" width="250" height="550"/> | <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/ea99a389-e302-4857-bdf2...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~38-~38: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...6a8da66e3" width="250" height="550"/> | <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/48bc373e-ed13-4ba4-a6bf...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~39-~39: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...f6b6a9393" width="250" height="550"/> | <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/319b0342-02c0-4a88-8ee0...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~40-~40: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...670f64c2c" width="250" height="550"/> | <img src="https://github.com/FreakyAli/Maui.FreakyControls/assets/31090457/cf41f49b-30a0-4508-bffc...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🪛 Markdownlint (0.37.0)

32-32: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


32-32: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


33-33: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


33-33: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


34-34: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


34-34: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


35-35: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


35-35: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


36-36: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


36-36: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


37-37: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


37-37: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


38-38: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


38-38: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


39-39: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


39-39: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


40-40: null
Images should have alternate text (alt text)

(MD045, no-alt-text)


40-40: null
Images should have alternate text (alt text)

(MD045, no-alt-text)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
MAUI.FreakyControls/MAUI.FreakyControls/Maui.FreakyControls.csproj (1)

51-56: Cleanup commented code

The commented-out XML block for FreakyPinView removal should either be uncommented if needed or removed entirely to maintain clean code.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between de33894 and cffe47e.

📒 Files selected for processing (1)
  • MAUI.FreakyControls/MAUI.FreakyControls/Maui.FreakyControls.csproj (5 hunks)
🔇 Additional comments (3)
MAUI.FreakyControls/MAUI.FreakyControls/Maui.FreakyControls.csproj (3)

167-170: Review conditional XAML update

The FreakyTextInputLayout.xaml update is conditionally included. Ensure this condition is necessary and won't cause issues in different build configurations.

✅ Verification successful

Based on the search results, I can generate the final response since I have enough information to verify the concern about the conditional XAML update:

Conditional XAML update is standard practice for MAUI controls

The condition '$(EnableDefaultXamlItems)' == 'true' is a standard MAUI build configuration that controls the inclusion of XAML files. This condition is appropriate because:

  1. It's the only XAML update condition in the project, following MAUI's conventional pattern
  2. The FreakyTextInputLayout is a fully implemented control with proper XAML/code-behind structure
  3. The control is actively used in samples with different border configurations (outlined, underlined, full)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for other conditional XAML includes
rg "Condition.*Update.*xaml"

# Check for FreakyTextInputLayout usage
rg -A 5 "FreakyTextInputLayout"

Length of output: 52412


163-166: Verify SignaturePadView implementation

New SignaturePadView and its handler have been added. Ensure:

  1. The SignaturePadView.xaml is properly implemented
  2. The handler is correctly configured for the dotnet platform

Also applies to: 187-189

✅ Verification successful

SignaturePadView implementation and handlers are properly configured

The verification shows that:

  1. The SignaturePadView (renamed to FreakySignaturePadView) is properly implemented with:

    • Full XAML implementation with canvas, clear button, and signature line
    • Complete code-behind with all necessary properties and methods
    • Proper event handling for strokes and clearing
  2. Platform-specific handlers are correctly configured:

    • iOS handler (FreakySignatureCanvasViewHandler.ios.cs)
    • Android handler (FreakySignatureCanvasViewHandler.android.cs)
    • Both handlers properly map stroke properties and handle events
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for the implementation of SignaturePadView
rg -A 10 "class SignaturePadView"

# Check for handler registration
rg -A 5 "SignaturePadView.*Handler"

Length of output: 73


Script:

#!/bin/bash
# Let's try to find the SignaturePadView file first
fd SignaturePadView

# Check the content of any XAML files related to SignaturePadView
fd -e xaml SignaturePadView --exec cat {}

# Look for handler implementations with a broader search
rg -i "signaturepad" -A 5

Length of output: 52983


156-160: Verify compatibility with major version updates

The package updates include significant version jumps:

  • Microsoft.Maui.Controls: 8.0.3 -> 8.0.82
  • SkiaSharp.Svg: 1.0.0.19 -> 1.60.0

Please ensure these major version updates don't introduce breaking changes.

Comment on lines 108 to 115
<!--<<<<<<< HEAD
<None Remove="Shared\EventArgs\" />
<None Remove="CommunityToolkit.Mvvm" />
<None Remove="Shared\FreakyAutoCompleteView\" />
<None Remove="Shared\FreakyPinView\" />
=======
<None Remove="CommunityToolkit.Mvvm" />
>>>>>>> master-->
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove merge conflict markers

There are leftover merge conflict markers in the code. These should be resolved and removed.

Apply this diff to clean up the merge conflict markers:

-		<!--<<<<<<< HEAD
-		<None Remove="Shared\EventArgs\" />
-		<None Remove="CommunityToolkit.Mvvm" />
-		<None Remove="Shared\FreakyAutoCompleteView\" />
-		<None Remove="Shared\FreakyPinView\" />
-=======
-		<None Remove="CommunityToolkit.Mvvm" />
->>>>>>> master-->
+		<None Remove="Shared\EventArgs\" />
+		<None Remove="CommunityToolkit.Mvvm" />
+		<None Remove="Shared\FreakyAutoCompleteView\" />
+		<None Remove="Shared\FreakyPinView\" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<!--<<<<<<< HEAD
<None Remove="Shared\EventArgs\" />
<None Remove="CommunityToolkit.Mvvm" />
<None Remove="Shared\FreakyAutoCompleteView\" />
<None Remove="Shared\FreakyPinView\" />
=======
<None Remove="CommunityToolkit.Mvvm" />
>>>>>>> master-->
<None Remove="Shared\EventArgs\" />
<None Remove="CommunityToolkit.Mvvm" />
<None Remove="Shared\FreakyAutoCompleteView\" />
<None Remove="Shared\FreakyPinView\" />

@FreakyAli FreakyAli merged commit 8cab216 into master Dec 15, 2024
4 checks passed
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.

6 participants