IP Library Granted Patent US 11,271,878
Granted Patent B2
US 11,271,878 · App. 16/010,036 · Granted Mar 8, 2022

Method, apparatus, and computer program product for initiating and executing a group based communication browser session and rendering a group based communication interface

Inventors: Mark Christian (Oakland, CA); John Rodgers (Vancouver, CA); James Whimpey (San Francisco, CA)
Assignee: Slack Technologies, LLC
H04L51/04H04L12/1818H04L67/02H04L67/2842H04L67/20H04L67/306
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 11,271,878
App. No.
16/010,036
Granted
Mar 8, 2022
Kind
B2
Abstract

Provided is a computing device of a group based communication system configured to initiate and execute a group-based communication browser session. An example computing device is configured to receive a group-based communication browser session initiation request. After receiving a group-based communication browser session initiation request, the example computing device will determine whether the computing is connected to an Internet. If the computing device is determined to be connected to the Internet, the example computing device determine whether a group-based communication service cache is available. If the group-based communication service cache is available, the example computing device will fetch a group-based application asset set from the group-based communication service cache. Then the example computing device will determine whether a group-based communication browser cache is available. If the group-based communication browser cache is available, the example computing device will fetch a group-based communication object set from the group-based communication browser cache based on a group-based communication browser cache hydration policy. Then the computing device will render a group-based communication interface using the fetched group-based application asset set and the fetched group-based communication object set.

Claims (73)

1. An apparatus for initiating a group-based communication browser session, the apparatus comprising at least one processor and at least one non-transitory memory including program code, the at least one non-transitory memory and the program code configured to, with the at least one processor, cause the apparatus to at least:

responsive to a transition by the apparatus from online status to offline status or from offline status to online status, determine whether a group-based communication service cache is available;

in circumstances where the group-based communication service cache is available, fetch a group-based application asset set from the group-based communication service cache responsive to the group-based communication browser session initiation request, wherein the group-based application asset set comprises a plurality of non-group-specific media;

in circumstances where the group-based communication service cache is not available, render an error message;

determine whether a group-based communication browser cache is available;

in circumstances where the group-based communication browser cache is available, fetch a group-based communication object set from the group-based communication browser cache based on a group-based communication browser cache hydration policy and responsive to the group-based communication browser session initiation request, wherein the group-based communication object set comprises at least one group-based message, and

wherein the group-based communication browser cache hydration policy defines conditions for fetching data from a group-based communication cache or a group-based communication repository and defines a plurality of types of cached data to be fetched under a corresponding plurality of different conditions, based on the group-based communication browser session initiation request; and

render a group-based communication interface using at least the fetched group-based application asset set and the fetched group-based communication object set.

2. The apparatus of claim 1 , wherein the rendering further uses a placeholder object set rendered in place of a group-based communication object set not available in the group-based communication browser cache.

3. The apparatus of claim 2 , wherein the memory including the program code is further configured to, with the at least one processor, cause the apparatus to:

fetch the group-based communication object set not available in the group-based communication browser cache from a group-based communication repository.

4. The apparatus of claim 3 , wherein the memory including the program code is further configured to, with the at least one processor, cause the apparatus to:

store the fetched group-based communication object set from the group-based communication browser cache to a group-based communication store;

store the fetched group-based application asset set to the group-based communication store; and

store the fetched group-based communication object set not available in the group-based communication browser cache to the group-based communication store.

5. The apparatus of claim 4 , wherein the memory including the program code is further configured to, with the at least one processor, cause the apparatus to:

selectively store, to the group-based communication browser cache and based on a pre-defined group-based communication browser cache retention policy:

one or more cached group-based communication objects of the fetched group-based communication object set from the group-based communication browser cache, and

one or more un-cached group-based communication objects of the fetched group-based communication object set not available in the group-based communication browser cache.

6. The apparatus of claim 4 , wherein the memory including the program code is further configured to, with the at least one processor, cause the apparatus to:

receive a request to render an additional group-based communication object;

determine whether the additional group-based communication object is available in the group-based communication store;

in circumstances where the additional group-based communication object is available in the group-based communication store, fetch the additional group-based communication object from the group-based communication store;

in circumstances where the additional group-based communication object is not available in the group-based communication store, determine whether the additional group-based communication object is available in the group-based communication browser cache;

in circumstances where the additional group-based communication object is available in the group-based communication browser cache, fetch the additional group-based communication object from the group-based communication browser cache; and

in circumstances where the additional group-based communication object is not available in the group-based communication browser cache, fetch the additional group-based communication object from the group-based communication repository.

7. The apparatus of claim 6 , further comprising:

in circumstances where the additional group-based communication object is not available in the group-based communication store, store the additional group-based communication object to the group-based communication store after fetching the additional group-based communication object.

8. The apparatus of claim 1 , wherein the memory including the program code is further configured to, with the at least one processor, cause the apparatus to:

receive a version indicator of one or more group-based communication objects locally stored from a group-based communication server;

compare a version indicator previously stored in a local storage to the received version indicator;

determine that the version indicator previously stored in the local storage and the received version indicator do not indicate a same version;

delete the one or more group-based communication objects locally stored;

fetch one or more group-based communication objects corresponding to the received version indicator from a group-based communication repository associated with the group-based communication server;

determine that the group-based communication browser session does not have a window focus; and

re-render the group-based communication interface using at least the fetched one or more group-based communication objects corresponding to the received version indicator.

9. A method for initiating a group-based communication browser session in a group-based communication system comprising a group-based communication server, a client device, and a plurality of group-based communication channels, the method comprising:

receiving a group-based communication browser session initiation request;

responsive to a transition by the apparatus from online status to offline status or from offline status to online status, determining whether a group-based communication service cache is available;

in circumstances where the group-based communication service cache is available, fetching a group-based application asset set from the group-based communication service cache responsive to the group-based communication browser session initiation request, wherein the group-based application asset set comprises a plurality of non-group-specific media;

in circumstances where the group-based communication service cache is not available, render an error message;

determining whether a group-based communication browser cache is available;

in circumstances where the group-based communication browser cache is available, fetching a group-based communication object set from the group-based communication browser cache based on a group-based communication browser cache hydration policy and responsive to the group-based communication browser session initiation request, wherein the group-based communication object set comprises at least one group-based message, and

wherein the group-based communication browser cache hydration policy defines conditions for fetching data from a group-based communication cache or a group-based communication repository and defines a plurality of types of cached data to be fetched under a corresponding plurality of different conditions, based on the group-based communication browser session initiation request; and

rendering a group-based communication interface using at least the fetched group-based application asset set and the fetched group-based communication object asset.

10. The method of claim 9 , wherein the rendering further uses a placeholder object set rendered in place of a group-based communication object set not available in the group-based communication browser cache.

11. The method of claim 10 , further comprising:

fetching the group-based communication object set not available in the group-based communication browser cache from a group-based communication repository.

12. The method of claim 11 , further comprising:

storing the fetched group-based communication object set from the group-based communication browser cache to a group-based communication store;

storing the fetched group-based application asset set to the group-based communication store; and

storing the fetched group-based communication object set not available in the group-based communication browser cache to the group-based communication store.

13. The method of claim 12 , further comprising:

selectively storing, to the group-based communication browser cache and based on a pre-defined group-based communication browser cache retention policy:

one or more cached group-based communication objects of the fetched group-based communication object set from the group-based communication browser cache, and

one or more un-cached group-based communication objects of the fetched group-based communication object set not available in the group-based communication browser cache.

14. The method of claim 12 , further comprising:

receiving a request to render an additional group-based communication object;

determining whether the additional group-based communication object is available in the group-based communication store;

in circumstances where the additional group-based communication object is available in the group-based communication store, fetching the additional group-based communication object from the group-based communication store;

in circumstances where the additional group-based communication object is not available in the group-based communication store, determining whether the additional group-based communication object is available in the group-based communication browser cache;

in circumstances where the additional group-based communication object is available in the group-based communication browser cache, fetching the additional group-based communication object from the group-based communication browser cache; and

in circumstances where the additional group-based communication object is not available in the group-based communication browser cache, fetching the additional group-based communication object from the group-based communication repository.

15. The method of claim 14 , further comprising:

in circumstances where the additional group-based communication object is not available in the group-based communication store, storing the additional group-based communication object to the group-based communication store after fetching the additional group-based communication object.

16. The method of claim 14 , further comprising:

receiving a version indicator of one or more group-based communication objects locally stored from a group-based communication server;

comparing a version indicator previously stored in a local storage to the version indicator received;

determining that the version indicator previously stored in the local storage and the version indicator received do not indicate a same version;

deleting the one or more group-based communication objects locally stored;

fetching one or more group-based communication objects corresponding to the received version indicator from a group-based communication repository associated with the group-based communication server;

determining that the group-based communication browser session does not have a window focus; and

re-rendering the group-based communication interface using at least the fetched one or more group-based communication objects corresponding to the received version indicator.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE, INC.
Reel/Frame 064642/0564 →
MERGER Recorded Jul 29, 2021
From: SLACK TECHNOLOGIES, INC.
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057475/0404 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2020
From: CHRISTIAN, MARK; RODGERS, JOHN; WHIMPEY, JAMES
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 053974/0237 →
PATENT SECURITY AGREEMENT Recorded May 30, 2019
From: SLACK TECHNOLOGIES, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 049332/0349 →