IP Library Granted Patent US 11,055,314
Granted Patent B1
US 11,055,314 · App. 16/237,273 · Granted Jul 6, 2021

Techniques for a database-driven messaging user interface

Inventors: Jason Curtis Jenks (Lynwood, WA); Joshua Scott Evenson (Brentwood, CA); Mohsen Agsen (Menlo Park, CA); Jeremy David Fein (New York, NY); Philippe Vincent Ajoux (San Mateo, CA)
Assignee: FACEBOOK, INC.
G06F16/27G06F9/451G06F16/2379G06F16/245G06F16/2428H04L51/32
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,055,314
App. No.
16/237,273
Granted
Jul 6, 2021
Kind
B1
Abstract

Techniques for a database-driven messaging user interface are described. In one embodiment, an apparatus may comprise a database access component operative to determine that a local messaging database of a messaging client on a client device has been updated; and examine the local messaging database to determine a set of database queries to rerun for a plurality of local user interface components; and the local user interface components operative to refresh based on running the set of database queries against the local messaging database. Other embodiments are described and claimed.

Claims (68)

1. A computer-implemented method, comprising:

determining that a local messaging database of a messaging client on a client device has been updated;

on the client device, generating a temporary database item indexed by a temporary identifier, and receiving a replacement database item corresponding to the temporary database item from a messaging server, the replacement database item indexed by a permanent identifier and comprising the temporary identifier as a secondary identifier;

replacing the temporary database item in the local messaging database with the replacement database item;

failing to retrieve the replacement database item using a database query for a local user interface component using the temporary identifier as a primary identifier; and

retrieving the replacement database item in place of the temporary database item based on using the temporary identifier as a secondary identifier.

2. The method of claim 1 , wherein:

the generating and receiving are performed by the messaging client, and

replacing the temporary database item with the replacement database item comprises deleting the temporary database item from the local messaging database, and adding the replacement database item to the local messaging database; further comprising:

examining the local messaging database to determine a set of database queries to rerun for a plurality of local user interface components; and

refreshing the plurality of local user interface components based on running the set of database queries against the local messaging database.

3. The method of claim 2 , wherein examining the local messaging database to determine the set of database queries to rerun comprises:

determining a set of modified database elements, wherein the modified database elements were modified when the local messaging database of the messaging client on the client database was updated; and

comparing the set of modified database elements to a database element mapping table to generate the set of database queries, wherein the database element mapping table lists relationships between database elements and database queries.

4. The method of claim 3 , wherein modified database elements of the local messaging database are flagged per-row with a modification-indication bit.

5. The method of claim 3 , the database element mapping table generated at a compile time for the messaging client based on a reverse mapping of database elements modified by each database query of a total set of database queries used by the messaging client, wherein the database elements modified by each database query of the total set of database queries is determined based on a database traversal of database views and/or database tables used by each database query of the total set of database queries.

6. The method of claim 2 , further comprising:

generating an updated query list representing the set of database queries; and

providing the updated query list to the plurality of local user interface components, wherein the plurality of local user interface components are operative to identify relevant database queries of the set of database queries and refresh using the relevant database queries.

7. The method of claim 2 , wherein refreshing the plurality of local user interface components based on running the set of database queries against the local messaging database comprises:

performing the set of database queries with the local messaging database to generate a set of updated database responses;

comparing, at the local user interface components, the updated database responses for each local user interface component to previous database responses for each local user interface component; and

modifying a user interface state for each of the plurality of local user interface components based on the comparing of the updated database responses for each local user interface component to the previous database responses for each local user interface component.

8. The method of claim 1 , the local messaging database updated based on a directive package directed to a messaging-sync virtual machine of the messaging client on the client device.

9. A client device apparatus, comprising:

a non-transitory computer-readable storage medium storing a local messaging database for a messaging client on the client device; and

a processor circuit configured to:

determine that the local messaging database has been updated;

on the client device, generate a temporary database item indexed by a temporary identifier, and receive a replacement database item corresponding to the temporary database item from a messaging server, the replacement database item indexed by a permanent identifier and comprising the temporary identifier as a secondary identifier;

replace the temporary database item in the local messaging database with the replacement database item;

fail to retrieve the replacement database item using a database query for a local user interface component using the temporary identifier as a primary identifier; and

retrieve the replacement database item in place of the temporary database item based on using the temporary identifier as a secondary identifier.

10. The apparatus of claim 9 , wherein:

the processor circuit is configured to perform the generating and receiving at the messaging client;

replacing the temporary database item with the replacement database item comprises deleting the temporary database item from the local messaging database, and adding the replacement database item to the local messaging database; and

the processor circuit is further configured to: examine the local messaging database to determine a set of database queries to rerun for a plurality of local user interface components; and

refresh the plurality of local user interface components based on running the set of database queries against the local messaging database.

11. The apparatus of claim 10 , wherein examining the local messaging database to determine the set of database queries to rerun comprises:

determining a set of modified database elements, wherein the modified database elements were modified when the local messaging database of the messaging client on the client database was updated; and compare the set of modified database elements to a database element mapping table to generate the set of database queries, wherein the database element mapping table lists relationships between database elements and database queries.

12. The apparatus of claim 11 , wherein modified database elements of the local messaging database are flagged per-row with a modification-indication bit, the database element mapping table generated at a compile time for the messaging client based on a reverse mapping of database elements modified by each database query of a total set of database queries used by the messaging client, wherein the database elements modified by each database query of the total set of database queries is determined based on a database traversal of database views and/or database tables used by each database query of the total set of database queries.

13. The apparatus of claim 10 , the processor circuit further configured to:

generate an updated query list representing the set of database queries; and provide the updated query list to the plurality of local user interface components; and

identify relevant database queries of the set of database queries; and refresh using the relevant database queries.

14. The apparatus of claim 9 , wherein refreshing the plurality of local user interface components based on running the set of database queries against the local messaging database comprises:

performing the set of database queries with the local messaging database to generate a set of updated database responses; and

comparing the updated database responses for each local user interface component to previous database responses for each local user interface component; and modify a user interface state for each of the plurality of local user interface components based on the comparing of the updated database responses for each local user interface component to the previous database responses for each local user interface component.

15. At least one non-transitory computer-readable storage medium comprising instructions that, when executed, cause a system to:

determine that a local messaging database of a messaging client on a client device has been updated;

on the client device, generating a temporary database item indexed by a temporary identifier, and receiving a replacement database item corresponding to the temporary database item from a messaging server, the replacement database item indexed by a permanent identifier and comprising the temporary identifier as a secondary identifier;

replacing the temporary database item in the local messaging database with the replacement database item;

failing to retrieve the replacement database item using a database query for a local user interface component using the temporary identifier as a primary identifier; and

retrieving the replacement database item in place of the temporary database item based on using the temporary identifier as a secondary identifier.

16. The computer-readable storage medium of claim 15 , wherein:

the generating and receiving are performed by the messaging client, and

replacing the temporary database item with the replacement database item comprises deleting the temporary database item from the local messaging database, and adding the replacement database item to the local messaging database; and further storing instructions for:

examining the local messaging database to determine a set of database queries to rerun for a plurality of local user interface components; and

refreshing the plurality of local user interface components based on running the set of database queries against the local messaging database.

17. The computer-readable storage medium of claim 16 , wherein examining the local messaging database to determine the set of database queries to rerun comprises further instructions that, when executed, cause a system to:

determine a set of modified database elements, wherein the modified database elements were modified when the local messaging database of the messaging client on the client database was updated; and

compare the set of modified database elements to a database element mapping table to generate the set of database queries, wherein the database element mapping table lists relationships between database elements and database queries.

18. The computer-readable storage medium of claim 17 , wherein modified database elements of the local messaging database are flagged per-row with a modification-indication bit, the database element mapping table generated at a compile time for the messaging client based on a reverse mapping of database elements modified by each database query of a total set of database queries used by the messaging client, wherein the database elements modified by each database query of the total set of database queries is determined based on a database traversal of database views and/or database tables used by each database query of the total set of database queries.

19. The computer-readable storage medium of claim 16 , comprising further instructions that, when executed, cause a system to:

generate an updated query list representing the set of database queries; and

provide the updated query list to the plurality of local user interface components, wherein the plurality of local user interface components are operative to identify relevant database queries of the set of database queries and refresh using the relevant database queries.

20. The computer-readable storage medium of claim 16 , wherein refreshing the plurality of local user interface components based on running the set of database queries against the local messaging database comprises further instructions that, when executed, cause a system to:

perform the set of database queries with the local messaging database to generate a set of updated database responses;

compare, at the local user interface components, the updated database responses for each local user interface component to previous database responses for each local user interface component; and

modify a user interface state for each of the plurality of local user interface components based on the comparing of the updated database responses for each local user interface component to the previous database responses for each local user interface component.

Assignments (2)
CHANGE OF NAME Recorded May 3, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 059849/0161 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2020
From: JENKS, JASON CURTIS; EVENSON, JOSHUA SCOTT; AGSEN, MOHSEN; FEIN, JEREMY DAVID; AJOUX, PHILIPPE VINCENT
To: FACEBOOK, INC.
Reel/Frame 051524/0551 →