Skip to content

Commit 38c754a

Browse files
committed
Adds methods for setting/retrieving a users badge
1 parent c172fea commit 38c754a

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,22 @@ user.destroy_identity
365365
# => true
366366
```
367367

368+
#### Setting a Users Badge
369+
370+
```ruby
371+
user = platform.users.find("user_id")
372+
user.set_badge(10)
373+
# => true
374+
```
375+
376+
#### Retrieving a Users Badge
377+
378+
```ruby
379+
user = platform.users.find("user_id")
380+
user.badge
381+
# => { "external_unread_count" => 13, "unread_conversation_count" => 10, "unread_message_count" => 50 }
382+
```
383+
368384

369385
#### Generating Identity Tokens ####
370386
See: [the official authentication guide](https://developer.layer.com/docs/android/guides#authentication)

lib/layer/resources/user.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ def destroy_identity
4141
client.delete(identity_url)
4242
end
4343

44+
def set_badge(badge_count)
45+
body = { external_unread_count: badge_count }
46+
client.put("#{url}/badge", body: body.to_json)
47+
end
48+
49+
def badge
50+
client.get("#{url}/badge")
51+
end
52+
4453
private
4554

4655
def identity_url

spec/layer/resources/user_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,32 @@
121121
user.destroy_identity
122122
end
123123
end
124+
125+
describe "#set_badge" do
126+
let(:badge_count) { { external_unread_count: 5 } }
127+
128+
it "should set the badge count for a user" do
129+
allow(http_client).to receive(:put).and_return(nil)
130+
expect(http_client).to receive(:put).with(
131+
"users/#{user.id}/badge",
132+
body: badge_count.to_json
133+
)
134+
user.set_badge(5)
135+
end
136+
end
137+
138+
describe "#badge" do
139+
before do
140+
allow(http_client).to receive(:get).and_return(user_badge)
141+
expect(http_client).to receive(:get).with("users/#{user.id}/badge")
142+
end
143+
144+
it "should retrieve badge for a user" do
145+
user.badge
146+
end
147+
148+
it "should return hash of badge values" do
149+
expect(user.badge).to be_instance_of(Hash)
150+
end
151+
end
124152
end

spec/layer_helper.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,12 @@ def user_identity_operations
9191
{operation: "set", property: "metadata.level", value: "2"}
9292
]
9393
end
94+
95+
def user_badge
96+
{
97+
external_unread_count: 13,
98+
unread_conversation_count: 10,
99+
unread_message_count: 50
100+
}
101+
end
94102
end

0 commit comments

Comments
 (0)