IP Library Granted Patent US 10,397,624
Granted Patent B1
US 10,397,624 · App. 16/206,553 · Granted Aug 27, 2019

Dynamic object update subscriptions based on user interactions with an interface

Inventors: Raissa Largman (San Francisco, CA); Jason Klym (San Francisco, CA); Danil Glinenko (Vancouver, CA); Neil Walker (Kings Beach, CA); Mark Christian (Oakland, CA); Serguei Mourachov (Vancouver, CA)
Assignee: SLACK TECHNOLOGIES, INC.
H04N21/2543H04N21/42204H04N21/4516H04N21/472
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,397,624
App. No.
16/206,553
Granted
Aug 27, 2019
Kind
B1
Abstract

Subscriptions for object updates to be transmitted to a client device may be dynamically managed based on the occurrence of one or more trigger events at the client device, which causes the client device to transmit subscription modification requests to a computing platform configured to dynamically maintain object subscription lists for each of one or more client devices based at least in part on subscription modification requests received from each of the one or more client devices, to determine whether subscribed objects for a particular client device are current at the client device, and to transmit updates of subscribed objects in real-time upon determining that the particular client device does not comprise current object data.

Claims (82)

1. A dynamic subscription management system for providing object updates to a client device, the dynamic subscription management system comprising:

one or more memory storage areas for maintaining current object data for a plurality of objects;

one or more processors collectively configured to:

receive subscription modification requests from each of one or more client devices, wherein the subscription modification requests each comprise data identifying objects moved across a graphical user interface field of view border of a corresponding one of the one or more client devices;

dynamically maintain subscription data for each of the one or more client devices based at least in part on subscription modification requests received from each of the one or more client devices, wherein the subscription data identifies visible objects of the plurality of objects within the graphical user interface field of view of each of one or more client devices;

determine whether a particular client device of the one or more client devices comprises current object data corresponding to each visible object reflected in subscription data for the particular client device; and

upon determining that the particular client device does not comprise current object data corresponding to one or more visible objects reflected in the subscription data for the particular client device, transmit updates of the visible objects reflected in the subscription data in real-time to the particular client device via a communication connection.

2. The dynamic subscription management system of claim 1 , wherein the dynamic subscription management system is in communication with the particular client device via a websocket connection.

3. The dynamic subscription management system of claim 1 , wherein the subscription modification requests received from the particular client device comprise version identifiers corresponding to objects stored at the particular client device, and

determining whether the particular client device comprises current object data corresponding to each visible object reflected in the subscription data for the particular client device comprises determining whether the version identifiers reflected in the subscription modification requests for one or more objects correspond with version identifiers of current object data stored within the one or more memory storage areas.

4. The dynamic subscription management system of claim 1 , wherein dynamically maintaining subscription data for the particular client device comprises:

receiving a subscription modification request embodied as a subscribe request from the particular client device, wherein the subscribe request identifies one or more new objects of the plurality of objects to add to the subscription data; and

updating the subscription data for the particular client device to include the one or more new objects.

5. The dynamic subscription management system of claim 4 , wherein each of the plurality of objects has a corresponding object identifier; and

updating the subscription data for the particular client device comprises concatenating object identifiers corresponding to each of the one or more new objects onto the subscription data for the particular client device.

6. The dynamic subscription management system of claim 1 , wherein dynamically maintaining subscription data for the particular client device comprises:

receiving a subscription modification request embodied as an unsubscribe request from the particular client device, wherein the unsubscribe request identifies one or more particular objects of the plurality of objects to remove from the subscription data; and

updating the subscription data for the particular client device to remove the one or more particular objects.

7. The dynamic subscription management system of claim 6 , wherein each of the plurality of objects has a corresponding object identifier; and

updating the subscription data for the particular client device comprises removing object identifiers corresponding to each of the one or more particular objects from the subscription data for the particular client device.

8. The dynamic subscription management system of claim 7 , wherein dynamically maintaining subscription data for a particular client device further comprises:

receiving a subscription modification request embodied as a subscribe request from the particular client device, wherein the subscribe request identifies one or more new objects of the plurality of objects to add to the subscription data; and

updating the subscription data for the particular client device further comprises, after removing object identifiers corresponding to each of the one or more particular objects from the subscription data for the particular client device, concatenating object identifiers corresponding to each of the one or more new objects onto the subscription data for the particular client device.

9. The dynamic subscription management system of claim 8 , wherein the subscription data defines a maximum number of objects reflected within the subscription data.

10. The dynamic subscription management system of claim 1 , wherein maintaining current object data for a plurality of objects comprises:

receiving object update data relating to one or more of the plurality of objects, wherein the object update data is generated at one or more client devices;

updating the object data stored within the one or more memory storage areas corresponding to the one or more of the plurality of objects based at least in part on the object update data.

11. A computer program product for maintaining an object update data stream to a client device, the computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising an executable portion configured to:

receive subscription modification requests from each of one or more client devices, wherein the subscription modification requests each comprise data identifying objects moved across a graphical user interface field of view border of a corresponding one of the one or more client devices;

dynamically maintain object subscription data for each of the one or more client devices based at least in part on subscription modification requests received from each of the one or more client devices, wherein the subscription data identifies visible objects of the plurality of objects within the graphical user interface field of view of each of one or more client devices;

determine whether a particular client device of the one or more client devices comprises current object data corresponding to each visible object reflected in the subscription data for the particular client device; and

upon determining that the particular client device does not comprise current object data corresponding to one or more visible objects reflected in the subscription data for the particular client device, transmit updates of the visible objects reflected in the subscription data in real-time to the particular client device via a communication connection.

12. The computer-program product of claim 11 , wherein the subscription modification requests received from the particular client device comprise version identifiers corresponding to local copies of objects stored at the particular client device, and

determining whether the particular client device comprises current object data corresponding to each visible object reflected in the subscription data for the particular client device comprises determining whether the version identifiers reflected in the subscription modification requests for one or more objects correspond with version identifiers of current object data stored within one or more memory storage areas.

13. The computer-program product of claim 11 , wherein dynamically maintaining subscription data for the particular client device comprises:

receiving a subscription modification request embodied as a subscribe request from the particular client device, wherein the subscribe request identifies one or more new objects of the plurality of objects to add to the subscription data; and

updating the subscription data for the particular client device to include the one or more new objects.

14. The computer-program product of claim 13 , wherein each of the plurality of objects has a corresponding object identifier; and

updating the subscription data for the particular client device comprises concatenating object identifiers corresponding to each of the one or more new objects onto the subscription data for the particular client device.

15. The computer-program product of claim 11 , wherein dynamically maintaining subscription data for the particular client device comprises:

receiving a subscription modification request embodied as an unsubscribe request from the particular client device, wherein the unsubscribe request identifies one or more particular objects of the plurality of objects to remove from the subscription data; and

updating the subscription data for the particular client device to remove the one or more particular objects.

16. The computer-program product of claim 15 , wherein each of the plurality of objects has a corresponding object identifier; and

updating the subscription data for the particular client device comprises removing object identifiers corresponding to each of the one or more particular objects from the subscription data for the particular client device.

17. The computer-program product of claim 16 , wherein dynamically maintaining subscription data for a particular client device further comprises:

receiving a subscription modification request embodied as a subscribe request from the particular client device, wherein the subscribe request identifies one or more new objects of the plurality of objects to add to the subscription data; and

updating the subscription data for the particular client device further comprises, after removing object identifiers corresponding to each of the one or more particular objects from the subscription data for the particular client device, concatenating object identifiers corresponding to each of the one or more new objects onto the subscription data for the particular client device.

18. The computer-program product of claim 11 , wherein maintaining current object data for a plurality of objects comprises:

receiving object update data relating to one or more of the plurality of objects, wherein the object update data is generated at one or more client devices;

updating the object data stored within the one or more memory storage areas corresponding to the one or more of the plurality of objects based at least in part on the object update data.

19. A dynamic subscription management system for providing object updates to a client device, the dynamic subscription management system comprising:

one or more memory storage areas for maintaining current object data for a plurality of objects;

one or more processors collectively configured to:

receive subscription modification requests from each of one or more client devices, wherein the subscription modification requests each comprise data identifying changes to identified objects displayed within a graphical user interface field of view of a corresponding one of the one or more client devices;

dynamically maintain subscription data for each of the one or more client devices based at least in part on subscription modification requests received from each of the one or more client devices, wherein the subscription data identifies visible objects of the plurality of objects within the graphical user interface field of view of each of one or more client devices;

determine whether a particular client device of the one or more client devices comprises current object data corresponding to each visible object reflected in subscription data for the particular client device; and

upon determining that the particular client device does not comprise current object data corresponding to one or more visible objects reflected in the subscription data for the particular client device, transmit updates of the visible objects reflected in the subscription data in real-time to the particular client device via a communication connection.

20. The dynamic subscription management system of claim 19 , wherein at least one of the subscription modification requests received from the particular client device identifies a plurality of new objects of the plurality of objects, wherein the plurality of new objects are added to the graphical user interface field of view of the particular client device.

21. The dynamic subscription management system of claim 20 , wherein the plurality of new objects are identified upon switching between a plurality of channel interfaces accessible to the client device.

22. The dynamic subscription management system of claim 19 , wherein the subscription modification requests received from the particular client device comprise version identifiers corresponding to objects stored at the particular client device, and

determining whether the particular client device comprises current object data corresponding to each visible object reflected in the subscription data for the particular client device comprises determining whether the version identifiers reflected in the subscription modification requests for one or more objects correspond with version identifiers of current object data stored within the one or more memory storage areas.

23. The dynamic subscription management system of claim 19 , wherein dynamically maintaining subscription data for the particular client device comprises:

receiving a subscription modification request embodied as a subscribe request from the particular client device, wherein the subscribe request identifies one or more new objects of the plurality of objects to add to the subscription data; and

updating the subscription data for the particular client device to include the one or more new objects.

24. The dynamic subscription management system of claim 22 , wherein each of the plurality of objects has a corresponding object identifier; and

updating the subscription data for the particular client device comprises concatenating object identifiers corresponding to each of the one or more new objects onto the subscription data for the particular client device.

25. The dynamic subscription management system of claim 19 , wherein dynamically maintaining subscription data for the particular client device comprises:

receiving a subscription modification request embodied as an unsubscribe request from the particular client device, wherein the unsubscribe request identifies one or more particular objects of the plurality of objects to remove from the subscription data; and

updating the subscription data for the particular client device to remove the one or more particular objects.

26. The dynamic subscription management system of claim 24 , wherein each of the plurality of objects has a corresponding object identifier; and

updating the subscription data for the particular client device comprises removing object identifiers corresponding to each of the one or more particular objects from the subscription data for the particular client device.

27. The dynamic subscription management system of claim 25 , wherein dynamically maintaining subscription data for a particular client device further comprises:

receiving a subscription modification request embodied as a subscribe request from the particular client device, wherein the subscribe request identifies one or more new objects of the plurality of objects to add to the subscription data; and

updating the subscription data for the particular client device further comprises, after removing object identifiers corresponding to each of the one or more particular objects from the subscription data for the particular client device, concatenating object identifiers corresponding to each of the one or more new objects onto the subscription data for the particular client device.

28. The dynamic subscription management system of claim 19 , wherein maintaining current object data for a plurality of objects comprises:

receiving object update data relating to one or more of the plurality of objects, wherein the object update data is generated at one or more client devices;

updating the object data stored within the one or more memory storage areas corresponding to the one or more of the plurality of objects based at least in part on the object update data.

29. A computer program product for maintaining an object update data stream to a client device, the computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising an executable portion configured to:

receive subscription modification requests from each of one or more client devices, wherein the subscription modification requests each comprise data identifying changes to identified objects displayed within a graphical user interface field of view of a corresponding one of the one or more client devices;

dynamically maintain object subscription data for each of the one or more client devices based at least in part on subscription modification requests received from each of the one or more client devices, wherein the subscription data identifies visible objects of the plurality of objects within the graphical user interface field of view of each of one or more client devices;

determine whether a particular client device of the one or more client devices comprises current object data corresponding to each visible object reflected in the subscription data for the particular client device; and

upon determining that the particular client device does not comprise current object data corresponding to one or more visible objects reflected in the subscription data for the particular client device, transmit updates of the visible objects reflected in the subscription data in real-time to the particular client device via a communication connection.

Assignments (6)
MERGER Recorded Jan 11, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE.COM, INC.
Reel/Frame 062354/0073 →
CHANGE OF NAME Recorded Jan 11, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 062354/0100 →
MERGER AND CHANGE OF NAME Recorded Oct 1, 2021
From: SLACK TECHNOLOGIES, INC.; SLACK TECHNOLOGIES, LLC
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057683/0001 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 49332/0349 Recorded Jul 19, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 057649/0882 →
PATENT SECURITY AGREEMENT Recorded May 30, 2019
From: SLACK TECHNOLOGIES, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 049332/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2019
From: LARGMAN, RAISSA; KLYM, JASON; GLINENKO, DANIL; WALKER, NEIL; CHRISTIAN, MARK; MOURACHOV, SERGUEI
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 049237/0080 →
Continuity (2)
Continuation 16176851 · Oct 31, 2018
Provisional Application 62729180 · Sep 10, 2018
Cited By (3)
US 12,218,948 US 12,223,077 US 12,401,656