48
48
_ bridgev2.NetworkAPI = (* TwitterClient )(nil )
49
49
_ bridgev2.ReactionHandlingNetworkAPI = (* TwitterClient )(nil )
50
50
_ bridgev2.ReadReceiptHandlingNetworkAPI = (* TwitterClient )(nil )
51
+ _ bridgev2.PushableNetworkAPI = (* TwitterClient )(nil )
51
52
)
52
53
53
54
func NewTwitterClient (ctx context.Context , tc * TwitterConnector , login * bridgev2.UserLogin ) * TwitterClient {
@@ -72,6 +73,39 @@ func NewTwitterClient(ctx context.Context, tc *TwitterConnector, login *bridgev2
72
73
return twitClient
73
74
}
74
75
76
+ var pushCfg = & bridgev2.PushConfig {
77
+ Web : & bridgev2.WebPushConfig {VapidKey : "BF5oEo0xDUpgylKDTlsd8pZmxQA1leYINiY-rSscWYK_3tWAkz4VMbtf1MLE_Yyd6iII6o-e3Q9TCN5vZMzVMEs" },
78
+ }
79
+
80
+ func (tc * TwitterClient ) GetPushConfigs () * bridgev2.PushConfig {
81
+ return pushCfg
82
+ }
83
+
84
+ func (tc * TwitterClient ) RegisterPushNotifications (ctx context.Context , pushType bridgev2.PushType , token string ) error {
85
+ if tc .client == nil {
86
+ return bridgev2 .ErrNotLoggedIn
87
+ }
88
+ switch pushType {
89
+ case bridgev2 .PushTypeWeb :
90
+ meta := tc .userLogin .Metadata .(* UserLoginMetadata )
91
+ if meta .PushKeys == nil {
92
+ meta .GeneratePushKeys ()
93
+ err := tc .userLogin .Save (ctx )
94
+ if err != nil {
95
+ return fmt .Errorf ("failed to save push key: %w" , err )
96
+ }
97
+ }
98
+ pc := twittermeow.WebPushConfig {
99
+ Endpoint : token ,
100
+ Auth : meta .PushKeys .Auth ,
101
+ P256DH : meta .PushKeys .P256DH ,
102
+ }
103
+ return tc .client .SetPushNotificationConfig (twittermeow .REGISTER , pc )
104
+ default :
105
+ return fmt .Errorf ("unsupported push type: %v" , pushType )
106
+ }
107
+ }
108
+
75
109
func (tc * TwitterClient ) Connect (ctx context.Context ) error {
76
110
if tc .client == nil {
77
111
tc .userLogin .BridgeState .Send (status.BridgeState {
0 commit comments