US 12,222,902 B1
Revisions to smart files
Gal Bar, Tel Aviv (IL); Daniel Benor, Sydney (AU); Dvir Cohen, Tel Aviv (IL); Nurit Bahat, Tel Aviv (IL); and Carmel Arad, Tel Aviv (IL)
Assigned to HoneyBook, Inc., San Francisco, CA (US)
Filed by HoneyBook, Inc., San Francisco, CA (US)
Filed on Oct. 3, 2023, as Appl. No. 18/480,287.
Int. Cl. G06F 16/17 (2019.01); G06F 16/13 (2019.01)
CPC G06F 16/1734 (2019.01) [G06F 16/137 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method, comprising:
generating, with a hash function and for a first element of a first plurality of elements of a first block of a plurality of blocks of a first instance of a smart file, a first element hash value representative of the first element of the first block;
generating, with the hash function and for a second element of the first plurality of elements of the first block, a second element hash value representative of the second element of the first block;
generating, with the hash function and for the first block of the plurality of blocks, a first block hash value representative of the first block;
generating, with the hash function and for a third element of a second plurality of elements of a second block of the plurality of blocks of the first instance of the smart file, a third element hash value representative of the third element of the second block;
generating, with the hash function and for a fourth element of the second plurality of elements of the second block, a fourth element hash value representative of the fourth element of the second block;
generating, with the hash function and for the second block of the plurality of blocks, a second block hash value representative of the second block;
storing, in a data store and with an association with the first instance of the smart file, each of the first element hash value, the second element hash value, the first block hash value, the third element hash value, the fourth element hash value, and the second block hash value;
subsequent to storing:
determining that a first change to the smart file has occurred between the first instance of the smart file and a current instance of the smart file;
in response to determining that the first change has occurred:
generating, with the hash function:
a first current first block hash value representative of the first block of the current instance of the smart file; and
a second current second block hash value representative of the second block of the current instance of the smart file;
determining, based at least in part on a first comparison between the first current first block hash value and the first block hash value stored in the data store, that no change has occurred to the first block; and
determining, based at least in part on a second comparison between the second current second block hash value and the second block hash value stored in the data store, that a second change has occurred to the second block between the first instance of the smart file and the current instance of the smart file;
in response to determining that the second change has occurred:
generating, with the hash function:
a third current third element hash value representative of the third element of the second block of the current instance of the smart file; and
a fourth current fourth element hash value representative of the fourth element of the second block of the current instance of the smart file;
determining, based at least in part on a third comparison between the third current third element hash value and the third element hash value stored in the data store, that no change has occurred to the third element of the second block; and
determining, based at least in part on a fourth comparison between the fourth current fourth element hash value and the fourth element hash value stored in the data store, that a third change has occurred to the fourth element of the second block between the first instance of the smart file and the current instance of the smart file;
in response to determining the third change, processing the fourth element of the second block of the current instance of the smart file and the fourth element of the second block of the first instance of the smart file to determine an actual change to the smart file; and
sending, for presentation, an indication of the actual change to the smart file.