Skip to main content

November 25

Hi all, hope you're doing well. Somehow I've been able to get more stuff done this month, hopefully it stays that way.

Display Artwork page improvements

Changed variables to use a static map similar to UserProfile implementation, allowing multiple DisplayArtwork instances to be loaded in the DOM. Required a lot of variable changes and some implementation tweaks, but it's finished now.

SPA implementation: conflict resolution

Changed many IDs for DOM elements on the SubmitArtwork, UserProfile and all login-related pages, to avoid ID conflicts now that each page can exist independently in the DOM in the SPA.

The procedure is also now fixed so that searches can either require all conditions to be met (e.g. categories, search terms) or only one or more to be met.

Logging improvements

I've been cleaning up and adding logging statements to a lot of different methods in the frontend code, primarily to help with debugging issues during testing, but also just as the codebase could always use more improvement.

Misc / Bug Fixes

  • Fixed artwork inline descriptions being incorrectly HTML-escaped in the database. They are now sanitized client-side via DOMPurify.

  • Fixed tooltips being repeatedly re-initialised, which led to errors when navigating between pages using SPA architecture. Loaded tooltips now have an additional CSS class to identify them so they aren't loaded again.

  • Fixed a bug in SearchArtwork that caused it not to load subsequent searches correctly when loaded via SPA.

  • Fixed a bug where user profile galleries would disappear and then fade back in when going back to them via the SPA.

  • Improved client-side gallery code performance, by modifying the CSS selectors used to modify element appearance attributes such that only the currently visible gallery is checked.

  • Fixed a bug that was causing the CreateAccount form not to submit, due to incorrect Turnstile configuration.

  • Fixed a bug where SpaStateManager.replaceState was returning errors in a few cases, due to the original history functions not having been replaced at that point in code execution yet. All uses of replaceState in other classes have been replaced with replaceStateAsync, which solves this by waiting for SpaStateManager to finish initialising.

  • Fixed a bug where the play button overlaid on videos didn't revert back to the "play" state upon a video ending, and was instead staying with the pause icon.

  • Fixed user galleries not being refreshed correctly when loading them from other tabs, due to a weird race condition.