Skip to main content
Glama
Southclaws

Storyden

by Southclaws
reply_notify.go1.55 kB
package reply_notify import ( "context" "errors" "github.com/Southclaws/opt" "github.com/rs/xid" "go.uber.org/fx" "github.com/Southclaws/storyden/app/resources/account/notification" "github.com/Southclaws/storyden/app/resources/datagraph" "github.com/Southclaws/storyden/app/resources/message" "github.com/Southclaws/storyden/app/services/notification/notify" "github.com/Southclaws/storyden/internal/infrastructure/pubsub" ) func Build() fx.Option { return fx.Invoke(func( ctx context.Context, lc fx.Lifecycle, bus *pubsub.Bus, notifier *notify.Notifier, ) { consumer := func(hctx context.Context) error { _, err := pubsub.Subscribe(ctx, bus, "reply_notify.reply_created", func(ctx context.Context, evt *message.EventThreadReplyCreated) error { errs := []error{} if evt.ReplyAuthorID != evt.ThreadAuthorID { err := notifier.Send(ctx, evt.ThreadAuthorID, opt.New(evt.ReplyAuthorID), notification.EventThreadReply, &datagraph.Ref{ ID: xid.ID(evt.ThreadID), Kind: datagraph.KindPost, }, ) errs = append(errs, err) } if rtid, ok := evt.ReplyToAuthorID.Get(); ok && rtid != evt.ReplyAuthorID { err := notifier.Send(ctx, rtid, opt.New(evt.ReplyAuthorID), notification.EventReplyToReply, &datagraph.Ref{ ID: xid.ID(evt.ReplyID), Kind: datagraph.KindPost, }, ) errs = append(errs, err) } return errors.Join(errs...) }) return err } lc.Append(fx.StartHook(consumer)) }) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Southclaws/storyden'

If you have feedback or need assistance with the MCP directory API, please join our Discord server