From 32af2b8141bddb7230dd4db7e6612703f2dfc25b Mon Sep 17 00:00:00 2001 From: Lahiru Maramba Date: Thu, 22 Jun 2023 18:05:56 -0400 Subject: [PATCH 1/6] [chore] Release 4.12.0 (#561) - Release 4.12.0 --- firebase.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase.go b/firebase.go index a06829b1..fb3b0b47 100644 --- a/firebase.go +++ b/firebase.go @@ -39,7 +39,7 @@ import ( var defaultAuthOverrides = make(map[string]interface{}) // Version of the Firebase Go Admin SDK. -const Version = "4.11.0" +const Version = "4.12.0" // firebaseEnvName is the name of the environment variable with the Config. const firebaseEnvName = "FIREBASE_CONFIG" From 02300a8e865290c35d0ff92ff241ee38ccd814a7 Mon Sep 17 00:00:00 2001 From: Lahiru Maramba Date: Tue, 11 Jul 2023 12:21:57 -0400 Subject: [PATCH 2/6] Revert "[chore] Release 4.12.0 (#561)" (#565) This reverts commit 32af2b8141bddb7230dd4db7e6612703f2dfc25b. --- firebase.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase.go b/firebase.go index fb3b0b47..a06829b1 100644 --- a/firebase.go +++ b/firebase.go @@ -39,7 +39,7 @@ import ( var defaultAuthOverrides = make(map[string]interface{}) // Version of the Firebase Go Admin SDK. -const Version = "4.12.0" +const Version = "4.11.0" // firebaseEnvName is the name of the environment variable with the Config. const firebaseEnvName = "FIREBASE_CONFIG" From 153ad06d78f4756557d49613a494e51587264032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=A8=EB=B3=91=EC=9A=B0?= Date: Fri, 7 Mar 2025 08:56:11 +0900 Subject: [PATCH 3/6] Modifying the messaging package - Adding Proxy Fields to AndroidNotification Struct --- messaging/messaging.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/messaging/messaging.go b/messaging/messaging.go index dcd412c3..3899fca7 100644 --- a/messaging/messaging.go +++ b/messaging/messaging.go @@ -191,6 +191,7 @@ type AndroidNotification struct { DefaultLightSettings bool `json:"default_light_settings,omitempty"` Visibility AndroidNotificationVisibility `json:"-"` NotificationCount *int `json:"notification_count,omitempty"` + Proxy AndroidNotificationProxy `json:"-"` } // MarshalJSON marshals an AndroidNotification into JSON (for internal use only). @@ -217,6 +218,16 @@ func (a *AndroidNotification) MarshalJSON() ([]byte, error) { visibility, _ = visibilities[a.Visibility] } + var proxy string + if a.Proxy != proxyUnspecified { + proxies := map[AndroidNotificationProxy]string{ + ProxyAllow: "ALLOW", + ProxyDeny: "DENY", + ProxyIfPriorityLowered: "IF_PRIORITY_LOWERED", + } + proxy, _ = proxies[a.Proxy] + } + var timestamp string if a.EventTimestamp != nil { timestamp = a.EventTimestamp.UTC().Format(rfc3339Zulu) @@ -232,12 +243,14 @@ func (a *AndroidNotification) MarshalJSON() ([]byte, error) { EventTimestamp string `json:"event_time,omitempty"` Priority string `json:"notification_priority,omitempty"` Visibility string `json:"visibility,omitempty"` + Proxy string `json:"proxy,omitempty"` VibrateTimings []string `json:"vibrate_timings,omitempty"` *androidInternal }{ EventTimestamp: timestamp, Priority: priority, Visibility: visibility, + Proxy: proxy, VibrateTimings: vibTimings, androidInternal: (*androidInternal)(a), } @@ -356,6 +369,15 @@ const ( VisibilitySecret ) +type AndroidNotificationProxy int + +const ( + proxyUnspecified AndroidNotificationProxy = iota + ProxyAllow + ProxyDeny + ProxyIfPriorityLowered +) + // LightSettings to control notification LED. type LightSettings struct { Color string From 95391babd01b117e0b898bcd5d5d938fd6b8e89f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=A8=EB=B3=91=EC=9A=B0?= Date: Mon, 17 Mar 2025 07:02:26 +0900 Subject: [PATCH 4/6] fix the lint errors --- messaging/messaging.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/messaging/messaging.go b/messaging/messaging.go index 3899fca7..9e4b149f 100644 --- a/messaging/messaging.go +++ b/messaging/messaging.go @@ -369,12 +369,20 @@ const ( VisibilitySecret ) +// AndroidNotificationProxy to control when a notification may be proxied. type AndroidNotificationProxy int const ( proxyUnspecified AndroidNotificationProxy = iota + + // ProxyAllow tries to proxy this notification. ProxyAllow + + // ProxyDeny does not proxy this notification. ProxyDeny + + // ProxyIfPriorityLowered only tries to proxy this notification if its AndroidConfig's Priority was + // lowered from high to normal on the device. ProxyIfPriorityLowered ) From 329c50361b99fd58428d523353d0c20dafdbe7b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=A8=EB=B3=91=EC=9A=B0?= Date: Mon, 17 Mar 2025 07:15:07 +0900 Subject: [PATCH 5/6] add tests to verify --- messaging/messaging_test.go | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/messaging/messaging_test.go b/messaging/messaging_test.go index dceed542..ce5c5bfc 100644 --- a/messaging/messaging_test.go +++ b/messaging/messaging_test.go @@ -683,6 +683,63 @@ var validMessages = []struct { "topic": "test-topic", }, }, + { + name: "AndroidNotificationProxyAllow", + req: &Message{ + Android: &AndroidConfig{ + Notification: &AndroidNotification{ + Proxy: ProxyAllow, + }, + }, + Topic: "test-topic", + }, + want: map[string]interface{}{ + "android": map[string]interface{}{ + "notification": map[string]interface{}{ + "proxy": "ALLOW", + }, + }, + "topic": "test-topic", + }, + }, + { + name: "AndroidNotificationProxyDeny", + req: &Message{ + Android: &AndroidConfig{ + Notification: &AndroidNotification{ + Proxy: ProxyDeny, + }, + }, + Topic: "test-topic", + }, + want: map[string]interface{}{ + "android": map[string]interface{}{ + "notification": map[string]interface{}{ + "proxy": "DENY", + }, + }, + "topic": "test-topic", + }, + }, + { + name: "AndroidNotificationProxyIfPriorityLowered", + req: &Message{ + Android: &AndroidConfig{ + Notification: &AndroidNotification{ + Proxy: ProxyIfPriorityLowered, + }, + }, + Topic: "test-topic", + }, + want: map[string]interface{}{ + "android": map[string]interface{}{ + "notification": map[string]interface{}{ + "proxy": "IF_PRIORITY_LOWERED", + }, + }, + "topic": "test-topic", + }, + }, } var invalidMessages = []struct { From 637490006699a1616c8d6123e338b2e40280865d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=A8=EB=B3=91=EC=9A=B0?= Date: Tue, 18 Mar 2025 06:39:53 +0900 Subject: [PATCH 6/6] fix AndroidNotificationProxy unmarshalling problem --- messaging/messaging.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/messaging/messaging.go b/messaging/messaging.go index 9e4b149f..90c0b367 100644 --- a/messaging/messaging.go +++ b/messaging/messaging.go @@ -264,6 +264,7 @@ func (a *AndroidNotification) UnmarshalJSON(b []byte) error { EventTimestamp string `json:"event_time,omitempty"` Priority string `json:"notification_priority,omitempty"` Visibility string `json:"visibility,omitempty"` + Proxy string `json:"proxy,omitempty"` VibrateTimings []string `json:"vibrate_timings,omitempty"` *androidInternal }{ @@ -301,6 +302,19 @@ func (a *AndroidNotification) UnmarshalJSON(b []byte) error { } } + if temp.Proxy != "" { + proxies := map[string]AndroidNotificationProxy{ + "ALLOW": ProxyAllow, + "DENY": ProxyDeny, + "IF_PRIORITY_LOWERED": ProxyIfPriorityLowered, + } + if prox, ok := proxies[temp.Proxy]; ok { + a.Proxy = prox + } else { + return fmt.Errorf("unknown proxy value: %q", temp.Proxy) + } + } + if temp.EventTimestamp != "" { ts, err := time.Parse(rfc3339Zulu, temp.EventTimestamp) if err != nil {