mirror of
https://github.com/Microsoft/vscode
synced 2024-08-28 05:19:39 +00:00
fix 208710 (#209343)
* fix syncing profiles (#209336) fix #208710 * bailout if profile with same name exists already * make it sync
This commit is contained in:
parent
8d1ecd7b94
commit
3289aba2b8
|
@ -335,7 +335,7 @@ export class UserDataProfilesService extends Disposable implements IUserDataProf
|
|||
try {
|
||||
const existing = this.profiles.find(p => p.name === name || p.id === id);
|
||||
if (existing) {
|
||||
return existing;
|
||||
throw new Error(`Profile with ${name} name already exists`);
|
||||
}
|
||||
|
||||
const profile = toUserDataProfile(id, name, joinPath(this.profilesHome, id), this.profilesCacheHome, options, this.defaultProfile);
|
||||
|
|
|
@ -187,34 +187,26 @@ export class UserDataProfilesManifestSynchroniser extends AbstractSynchroniser i
|
|||
|
||||
if (localChange !== Change.None) {
|
||||
await this.backupLocal(stringifyLocalProfiles(this.getLocalUserDataProfiles(), false));
|
||||
const promises: Promise<any>[] = [];
|
||||
for (const profile of local.added) {
|
||||
promises.push((async () => {
|
||||
this.logService.trace(`${this.syncResourceLogLabel}: Creating '${profile.name}' profile...`);
|
||||
await this.userDataProfilesService.createProfile(profile.id, profile.name, { shortName: profile.shortName, icon: profile.icon, useDefaultFlags: profile.useDefaultFlags });
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Created profile '${profile.name}'.`);
|
||||
})());
|
||||
}
|
||||
for (const profile of local.removed) {
|
||||
promises.push((async () => {
|
||||
this.logService.trace(`${this.syncResourceLogLabel}: Removing '${profile.name}' profile...`);
|
||||
await this.userDataProfilesService.removeProfile(profile);
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Removed profile '${profile.name}'.`);
|
||||
})());
|
||||
}
|
||||
for (const profile of local.updated) {
|
||||
await Promise.all(local.removed.map(async profile => {
|
||||
this.logService.trace(`${this.syncResourceLogLabel}: Removing '${profile.name}' profile...`);
|
||||
await this.userDataProfilesService.removeProfile(profile);
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Removed profile '${profile.name}'.`);
|
||||
}));
|
||||
await Promise.all(local.added.map(async profile => {
|
||||
this.logService.trace(`${this.syncResourceLogLabel}: Creating '${profile.name}' profile...`);
|
||||
await this.userDataProfilesService.createProfile(profile.id, profile.name, { shortName: profile.shortName, icon: profile.icon, useDefaultFlags: profile.useDefaultFlags });
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Created profile '${profile.name}'.`);
|
||||
}));
|
||||
await Promise.all(local.updated.map(async profile => {
|
||||
const localProfile = this.userDataProfilesService.profiles.find(p => p.id === profile.id);
|
||||
if (localProfile) {
|
||||
promises.push((async () => {
|
||||
this.logService.trace(`${this.syncResourceLogLabel}: Updating '${profile.name}' profile...`);
|
||||
await this.userDataProfilesService.updateProfile(localProfile, { name: profile.name, shortName: profile.shortName, icon: profile.icon, useDefaultFlags: profile.useDefaultFlags });
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Updated profile '${profile.name}'.`);
|
||||
})());
|
||||
this.logService.trace(`${this.syncResourceLogLabel}: Updating '${profile.name}' profile...`);
|
||||
await this.userDataProfilesService.updateProfile(localProfile, { name: profile.name, shortName: profile.shortName, icon: profile.icon, useDefaultFlags: profile.useDefaultFlags });
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Updated profile '${profile.name}'.`);
|
||||
} else {
|
||||
this.logService.info(`${this.syncResourceLogLabel}: Could not find profile with id '${profile.id}' to update.`);
|
||||
}
|
||||
}
|
||||
await Promise.all(promises);
|
||||
}));
|
||||
}
|
||||
|
||||
if (remoteChange !== Change.None) {
|
||||
|
|
Loading…
Reference in a new issue