Support IPNS address translations (#8502)
License: MIT Signed-off-by: Henrique Dias <hacdias@gmail.com> Co-authored-by: Whymarrh Whitby <whymarrh.whitby@gmail.com>feature/default_network_editable
parent
095eeab881
commit
890bc25e28
@ -0,0 +1,28 @@ |
||||
const version = 45 |
||||
import { cloneDeep } from 'lodash' |
||||
|
||||
/** |
||||
* Replaces {@code PreferencesController.ipfsGateway} with 'dweb.link' if set |
||||
*/ |
||||
export default { |
||||
version, |
||||
migrate: async function (originalVersionedData) { |
||||
const versionedData = cloneDeep(originalVersionedData) |
||||
versionedData.meta.version = version |
||||
const state = versionedData.data |
||||
versionedData.data = transformState(state) |
||||
return versionedData |
||||
}, |
||||
} |
||||
|
||||
const outdatedGateways = [ |
||||
'ipfs.io', |
||||
'ipfs.dweb.link', |
||||
] |
||||
|
||||
function transformState (state) { |
||||
if (outdatedGateways.includes(state?.PreferencesController?.ipfsGateway)) { |
||||
state.PreferencesController.ipfsGateway = 'dweb.link' |
||||
} |
||||
return state |
||||
} |
@ -0,0 +1,92 @@ |
||||
import assert from 'assert' |
||||
import migration45 from '../../../app/scripts/migrations/045' |
||||
|
||||
describe('migration #45', function () { |
||||
it('should update the version metadata', function (done) { |
||||
const oldStorage = { |
||||
'meta': { |
||||
'version': 44, |
||||
}, |
||||
'data': {}, |
||||
} |
||||
|
||||
migration45.migrate(oldStorage) |
||||
.then((newStorage) => { |
||||
assert.deepEqual(newStorage.meta, { |
||||
'version': 45, |
||||
}) |
||||
done() |
||||
}) |
||||
.catch(done) |
||||
}) |
||||
|
||||
it('should update ipfsGateway value if outdated', function (done) { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
PreferencesController: { |
||||
ipfsGateway: 'ipfs.dweb.link', |
||||
bar: 'baz', |
||||
}, |
||||
foo: 'bar', |
||||
}, |
||||
} |
||||
|
||||
migration45.migrate(oldStorage) |
||||
.then((newStorage) => { |
||||
assert.deepEqual(newStorage.data, { |
||||
PreferencesController: { |
||||
ipfsGateway: 'dweb.link', |
||||
bar: 'baz', |
||||
}, |
||||
foo: 'bar', |
||||
}) |
||||
done() |
||||
}) |
||||
.catch(done) |
||||
}) |
||||
|
||||
it('should not update ipfsGateway value if custom set', function (done) { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
PreferencesController: { |
||||
ipfsGateway: 'blah', |
||||
bar: 'baz', |
||||
}, |
||||
foo: 'bar', |
||||
}, |
||||
} |
||||
|
||||
migration45.migrate(oldStorage) |
||||
.then((newStorage) => { |
||||
assert.deepEqual(newStorage.data, { |
||||
PreferencesController: { |
||||
ipfsGateway: 'blah', |
||||
bar: 'baz', |
||||
}, |
||||
foo: 'bar', |
||||
}) |
||||
done() |
||||
}) |
||||
.catch(done) |
||||
}) |
||||
|
||||
it('should do nothing if no PreferencesController key', function (done) { |
||||
const oldStorage = { |
||||
meta: {}, |
||||
data: { |
||||
foo: 'bar', |
||||
}, |
||||
} |
||||
|
||||
migration45.migrate(oldStorage) |
||||
.then((newStorage) => { |
||||
assert.deepEqual(newStorage.data, { |
||||
foo: 'bar', |
||||
}) |
||||
done() |
||||
}) |
||||
.catch(done) |
||||
}) |
||||
}) |
Loading…
Reference in new issue