Skip to content

Commit

Permalink
fix(addressbook(web)): update card on save when certificate is removed
Browse files Browse the repository at this point in the history
  • Loading branch information
cgx committed Mar 21, 2022
1 parent 547d26a commit c7ee4d8
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 6 deletions.
6 changes: 5 additions & 1 deletion UI/Contacts/UIxContactActions.m
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,11 @@ - (WOResponse *) certificateAction

- (WOResponse *) removeCertificateAction
{
[[[self clientObject] vCard] setCertificate: nil];
SOGoContactGCSEntry *contact;

contact = [self clientObject];
[[contact vCard] setCertificate: nil];
[contact save];

return [self responseWith204];
}
Expand Down
5 changes: 5 additions & 0 deletions UI/Contacts/UIxContactEditor.m
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ - (void) setAttributes: (NSDictionary *) attributes
NSCalendarDate *date;
CardElement *element;
id o;
BOOL hasCertificate;

unsigned int i, year, month, day;

Expand Down Expand Up @@ -418,6 +419,10 @@ - (void) setAttributes: (NSDictionary *) attributes
}
}

hasCertificate = [[attributes objectForKey: @"hasCertificate"] boolValue];
if (!hasCertificate)
[card setCertificate: nil];

[card cleanupEmptyChildren];
}

Expand Down
9 changes: 8 additions & 1 deletion UI/Templates/ContactsUI/UIxContactEditorTemplate.wox
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
{{::'S/MIME Certificate' | loc}}
</p>
<md-button class="md-warn"
ng-click="editor.card.$removeCertificate()">
ng-click="editor.removeCertificate(contactForm)">
<var:string label:value="Uninstall"/>
</md-button>
<md-icon class="sg-icon-toggle">expand_more</md-icon>
Expand All @@ -154,6 +154,13 @@
<div class="md-margin" md-whiteframe="3">
<div class="md-padding" layout="row" layout-wrap="layout-wrap">
<div flex="50" flex-xs="100">
<div class="sg-padded--bottom" ng-if="editor.certificate.emails.length">
<div class="md-subhead md-default-theme md-fg md-primary"
ng-bind="::'Email Addresses' | loc"><!-- Email Addresses --></div>
<div class="pseudo-input-field md-body-1"
ng-repeat="email in ::editor.certificate.emails"
ng-bind="email"><!-- email address --></div>
</div>
<div class="md-subhead md-default-theme md-fg md-primary"
ng-bind="::'Subject Name' | loc"><!-- Subject Name --></div>
<div ng-repeat="field in editor.certificate.subject">
Expand Down
13 changes: 9 additions & 4 deletions UI/WebServerResources/js/Contacts/Card.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -575,12 +575,17 @@
* @desc Remove any S/MIME certificate associated with the account.
* @returns a promise of the HTTP operation
*/
Card.prototype.$removeCertificate = function() {
Card.prototype.$removeCertificate = function(immediate) {
var _this = this;

return Card.$$resource.fetch(this.$path(), 'removeCertificate').then(function() {
_this.hasCertificate = false;
});
if (immediate) {
return Card.$$resource.fetch(this.$path(), 'removeCertificate').then(function() {
_this.hasCertificate = false;
});
}
else {
this.hasCertificate = false;
}
};

/**
Expand Down
5 changes: 5 additions & 0 deletions UI/WebServerResources/js/Contacts/CardController.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@
focus('org_' + i);
};

this.removeCertificate = function (form) {
this.card.$removeCertificate();
form.$setDirty();
};

this.addBirthday = function () {
this.card.birthday = new Date();
};
Expand Down

0 comments on commit c7ee4d8

Please sign in to comment.