discourse/app/assets/javascripts/discourse/lib/hash.js.es6
Robin Ward ddf0db0338 Refactor notifications localStorage cache into adapter pattern.
Sometimes you want stale data right away, then refresh it async.
This adds `findStale` to the store for that case. If it returns
an object with `hasResults` you can get the `results` and display
them.

It also returns a `refresh()` method to freshen up the stale data.

To enable `localStorage` support for stale data, just include the
mixin `StaleLocalStorage` into an adapter for that model. This
commit includes a sample of doing that for `Notifications`.
2015-08-31 14:12:27 -04:00

12 lines
286 B
JavaScript

/*eslint no-bitwise:0 */
// Note: before changing this be aware the same algo is used server side for avatars.
export function hashString(str) {
let hash = 0;
for (let i = 0; i<str.length; i++) {
hash = ((hash<<5)-hash) + str.charCodeAt(i);
hash |= 0;
}
return hash;
}