Add Facebook share action for game-list updates #13

Open
opened 2024-01-14 14:21:16 -06:00 by jimmyb · 0 comments
Owner

MyVideoGameList should let users share meaningful game-list activity to Facebook without building a long-lived Facebook connector or storing Facebook posting credentials.

The original issue proposed a Facebook integration that would post when someone adds or updates a game on their list. Because full Facebook publishing requires platform permissions, app review, OAuth token storage, and ongoing policy maintenance, this issue now tracks a simpler user-initiated share action. Users should be able to choose a Facebook share action after relevant game-list activity, review the post on Facebook, and decide whether to publish it themselves. It also tracks enabling the existing Connected Facebook achievement on a user's first successful Facebook share initiation. With a share dialog and no OAuth/callback, MVGL cannot verify that Facebook ultimately published the post.

Scope

  • User-facing Facebook share action for supported game-list activity.
  • Supported initial activity types: adding a game to a list, updating list status, rating a game, and publishing a review where those flows exist.
  • Share links should point to the relevant public MVGL URL, such as the game profile, review, or user game-list entry when available.
  • Share copy should be generated by MVGL but remain editable on Facebook before posting.
  • No Facebook OAuth app, token storage, automatic background posting, or account-level connector settings.
  • Open Graph metadata should make shared MVGL pages render cleanly on Facebook.
  • Enable the existing Connected Facebook badge on the first successful share initiation: MVGL validates/generates a Facebook share target for public content, persists the idempotent award, and opens the Facebook share dialog. The badge is not awarded merely for viewing a share control.
  • Do not claim or attempt to detect a completed Facebook post without a future explicit OAuth/callback integration.
  • Targeted/backfill behavior must not infer past share initiations that were not recorded.
  • Share controls should follow existing Laravel/Tailwind layout patterns and respect light/dark mode.

Acceptance Criteria

  • Authenticated users see a Facebook share action after supported game-list actions complete successfully.
  • Users are never required to connect a Facebook account to use the share action.
  • Clicking the share action opens Facebook with the appropriate MVGL URL and share context.
  • The share action is user-initiated and does not automatically publish anything to Facebook.
  • Share URLs use named routes and include canonical public URLs where possible.
  • The share action is not shown for private or unavailable content that should not be shared publicly.
  • Shared game, review, or list pages include suitable title, description, and image metadata for Facebook previews.
  • Failed or unavailable share URL generation does not break the underlying game-list action.
  • The UI copy makes clear that the user is sharing manually, not connecting a Facebook account.
  • The first successful share initiation for eligible public content awards the existing Connected Facebook badge exactly once, using existing idempotent persistence and feedback conventions.
  • A share control that cannot generate a valid Facebook share target, private/unavailable content, or a user merely viewing the control never awards the badge.
  • Repeated successful share initiations do not create duplicate Connected Facebook awards.
  • The implementation does not report that a post was published on Facebook, because a share dialog provides no verifiable completion callback.
  • Backfill/targeted recalculation must not infer historical share initiations; only recorded share events may support it.
  • The Connected Facebook badge does not introduce OAuth, API credentials, token storage, or automatic posting.

Test Coverage Required

  • Feature tests confirming supported game-list actions expose the Facebook share action after success.
  • Feature tests confirming guests or unauthorized users cannot trigger protected list actions just to reach a share prompt.
  • Tests confirming private or non-public content does not expose a Facebook share action.
  • Tests confirming generated Facebook share URLs include the expected public MVGL target URL.
  • Regression tests confirming the game-list action still succeeds if share metadata is unavailable.
  • Tests for Open Graph metadata on shared game/review/list pages where metadata is added or changed.
  • Badge tests confirming the first valid Facebook share initiation awards Connected Facebook once, repeated initiations remain idempotent, unavailable/private share targets never award it, and unrecorded historical shares are not inferred by backfill.
  • Tests confirming the badge behavior does not introduce a Facebook connector, OAuth flow, token storage, automatic posting, or a false claim that Facebook published the post.
  • Tests should use Pest and focused feature coverage.
  • Run the focused affected tests, then run `vendor/bin/pint --dirty` before closing the issue.

Progress Checklist

  • Public game profile pages exist
  • User profile social fields exist for displaying Facebook handles
  • Identify supported game-list activity completion points
  • Add reusable share URL/copy generation for Facebook
  • Add a recorded successful share-initiation action for eligible public content
  • Add Facebook share controls after supported successful actions
  • Confirm private or unavailable content suppresses the share action
  • Add or update Open Graph metadata for shared MVGL pages
  • Enable Connected Facebook badge evaluation, idempotent persistence, and action feedback on first valid share initiation
  • Add recorded-share-only backfill/targeted recalculation coverage
  • Add tests for share visibility, URL generation, privacy suppression, metadata, and badge behavior
  • Confirm no Facebook connector, OAuth flow, token storage, automatic posting, or false successful-post claim is introduced
MyVideoGameList should let users share meaningful game-list activity to Facebook without building a long-lived Facebook connector or storing Facebook posting credentials. The original issue proposed a Facebook integration that would post when someone adds or updates a game on their list. Because full Facebook publishing requires platform permissions, app review, OAuth token storage, and ongoing policy maintenance, this issue now tracks a simpler user-initiated share action. Users should be able to choose a Facebook share action after relevant game-list activity, review the post on Facebook, and decide whether to publish it themselves. It also tracks enabling the existing Connected Facebook achievement on a user's first successful Facebook share initiation. With a share dialog and no OAuth/callback, MVGL cannot verify that Facebook ultimately published the post. ## Scope - User-facing Facebook share action for supported game-list activity. - Supported initial activity types: adding a game to a list, updating list status, rating a game, and publishing a review where those flows exist. - Share links should point to the relevant public MVGL URL, such as the game profile, review, or user game-list entry when available. - Share copy should be generated by MVGL but remain editable on Facebook before posting. - No Facebook OAuth app, token storage, automatic background posting, or account-level connector settings. - Open Graph metadata should make shared MVGL pages render cleanly on Facebook. - Enable the existing Connected Facebook badge on the first successful share initiation: MVGL validates/generates a Facebook share target for public content, persists the idempotent award, and opens the Facebook share dialog. The badge is not awarded merely for viewing a share control. - Do not claim or attempt to detect a completed Facebook post without a future explicit OAuth/callback integration. - Targeted/backfill behavior must not infer past share initiations that were not recorded. - Share controls should follow existing Laravel/Tailwind layout patterns and respect light/dark mode. ## Acceptance Criteria - Authenticated users see a Facebook share action after supported game-list actions complete successfully. - Users are never required to connect a Facebook account to use the share action. - Clicking the share action opens Facebook with the appropriate MVGL URL and share context. - The share action is user-initiated and does not automatically publish anything to Facebook. - Share URLs use named routes and include canonical public URLs where possible. - The share action is not shown for private or unavailable content that should not be shared publicly. - Shared game, review, or list pages include suitable title, description, and image metadata for Facebook previews. - Failed or unavailable share URL generation does not break the underlying game-list action. - The UI copy makes clear that the user is sharing manually, not connecting a Facebook account. - The first successful share initiation for eligible public content awards the existing Connected Facebook badge exactly once, using existing idempotent persistence and feedback conventions. - A share control that cannot generate a valid Facebook share target, private/unavailable content, or a user merely viewing the control never awards the badge. - Repeated successful share initiations do not create duplicate Connected Facebook awards. - The implementation does not report that a post was published on Facebook, because a share dialog provides no verifiable completion callback. - Backfill/targeted recalculation must not infer historical share initiations; only recorded share events may support it. - The Connected Facebook badge does not introduce OAuth, API credentials, token storage, or automatic posting. ## Test Coverage Required - Feature tests confirming supported game-list actions expose the Facebook share action after success. - Feature tests confirming guests or unauthorized users cannot trigger protected list actions just to reach a share prompt. - Tests confirming private or non-public content does not expose a Facebook share action. - Tests confirming generated Facebook share URLs include the expected public MVGL target URL. - Regression tests confirming the game-list action still succeeds if share metadata is unavailable. - Tests for Open Graph metadata on shared game/review/list pages where metadata is added or changed. - Badge tests confirming the first valid Facebook share initiation awards Connected Facebook once, repeated initiations remain idempotent, unavailable/private share targets never award it, and unrecorded historical shares are not inferred by backfill. - Tests confirming the badge behavior does not introduce a Facebook connector, OAuth flow, token storage, automatic posting, or a false claim that Facebook published the post. - Tests should use Pest and focused feature coverage. - Run the focused affected tests, then run \`vendor/bin/pint --dirty\` before closing the issue. ## Progress Checklist - [x] Public game profile pages exist - [x] User profile social fields exist for displaying Facebook handles - [ ] Identify supported game-list activity completion points - [ ] Add reusable share URL/copy generation for Facebook - [ ] Add a recorded successful share-initiation action for eligible public content - [ ] Add Facebook share controls after supported successful actions - [ ] Confirm private or unavailable content suppresses the share action - [ ] Add or update Open Graph metadata for shared MVGL pages - [ ] Enable Connected Facebook badge evaluation, idempotent persistence, and action feedback on first valid share initiation - [ ] Add recorded-share-only backfill/targeted recalculation coverage - [ ] Add tests for share visibility, URL generation, privacy suppression, metadata, and badge behavior - [ ] Confirm no Facebook connector, OAuth flow, token storage, automatic posting, or false successful-post claim is introduced
Codex changed title from Add Connector to Facebook to Add Facebook share action for game-list updates 2026-06-01 23:10:00 -05:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MyVideoGameList/myvideogamelist.com#13
No description provided.