GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add PushDeliveryTarget by GErP83 · Pull Request #5 · feather-framework/feather-push

Conversation

@GErP83

@GErP83 GErP83 commented Aug 18, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor
  • Use a single PushClient interface for all delivery targets
  • Add PushDeliveryTarget for device tokens and topics
  • Add unsupportedTarget for providers that do not support a target type
  • Improve public API documentation and error descriptions
  • Update README examples and explain FCM/APNs targeting differences

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@GErP83
add TopicPushClient
b182269
@GErP83
GErP83 requested review from tib and viaszkadi August 18, 2026 16:23
viaszkadi
viaszkadi approved these changes Aug 18, 2026
View reviewed changes
tib
tib requested changes Aug 18, 2026
View reviewed changes

@tib tib left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Why do we introduced another push client protocol?

This is already VERY confusing to me:

  • PushClient -> i know i need a client to send push...
  • TopicPushClient -> ???

Shouldn't we use an enum to differentiate delivery targets?

enum PushDeliveryTarget {
    case deviceToken(String)
    case topic(String)
}

This way push client code could be:

public protocol PushClient: Sendable {

    func send(
        notification: PushNotification,
        to target: PushDeliveryTarget
    )
}

Also call site would look a lot better:

pushClient.send(
    notification: PushNotification, 
    to: .deviceToken("my-device")
)
pushClient.send(
    notification: PushNotification, 
    to: .topic("my-topic")
)

WDYT @viaszkadi ? 🤔

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

GErP83 and viaszkadi reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
@tib

tib commented Aug 18, 2026

Copy link
Copy Markdown
Member

+1: I'm well aware that APNS topic has to be the bundle identifier, and it's completely different what Firebase defines as topic.

Still from a framework perspective, I'd like to have 1 interface to handle things, not multiple abstraction protocols. If APNs has no support for real topics, then we're screwed anyways, so we could simply trigger a fatalError("Topics are not supported using this driver.") when matching that case...

If someone uses the FCM driver then it'll be just fine and we should be able to send to both platforms using topics...

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@GErP83
add PushDeliveryTarget
7955722
@GErP83 GErP83 changed the title Add TopicPushClient Add PushDeliveryTarget Aug 19, 2026
@GErP83
GErP83 requested review from tib and viaszkadi August 19, 2026 06:22
tib
tib approved these changes Aug 19, 2026
View reviewed changes
viaszkadi
viaszkadi approved these changes Aug 19, 2026
View reviewed changes
@GErP83
GErP83 merged commit 10b6c4e into main Aug 19, 2026
31 of 34 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@GErP83
GErP83 deleted the feature/beta2 branch August 19, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@tib tib tib approved these changes
@viaszkadi viaszkadi viaszkadi approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@GErP83 @tib @viaszkadi
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.