@jumoo/usync-expansions 17.6.1-prerelease.41 → 17.6.1-prerelease.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  export { client, type CreateClientConfig } from './client.gen';
2
2
  export { FilesService, ItemsService, LicenceService, type Options, RestoreService } from './sdk.gen';
3
- export { type Assembly, type AssemblyWritable, CallingConventions, ChangeDetailType, ChangeType, type CheckLegacyData, type CheckLegacyErrors, type CheckLegacyResponse, type CheckLegacyResponses, type CleanData, type CleanErrors, type CleanResponses, type ClientOptions, type ConstructorInfo, type ConstructorInfoWritable, type CustomAttributeData, type CustomAttributeDataWritable, type CustomAttributeNamedArgument, type CustomAttributeNamedArgumentWritable, type CustomAttributeTypedArgument, type CustomAttributeTypedArgumentWritable, DependencyFlags, EventAttributes, type EventInfo, type EventInfoWritable, type Exception, type ExceptionWritable, FieldAttributes, type FieldInfo, type FieldInfoWritable, GenericParameterAttributes, type GetActionViewData, type GetActionViewErrors, type GetActionViewResponse, type GetActionViewResponses, type GetAllData, type GetAllErrors, type GetAllResponse, type GetAllResponses, type GetLicenceData, type GetLicenceErrors, type GetLicenceResponse, type GetLicenceResponses, type GetLicenceStatusData, type GetLicenceStatusErrors, type GetLicenceStatusResponse, type GetLicenceStatusResponses, type GetPreviewData, type GetPreviewErrors, type GetPreviewResponse, type GetPreviewResponses, type GetReportData, type GetReportErrors, type GetReportResponse, type GetReportResponses, type GetRestorePointData, type GetRestorePointErrors, type GetRestorePointResponse, type GetRestorePointResponses, type GetSyncItemData, type GetSyncItemErrors, type GetSyncItemResponse, type GetSyncItemResponses, type HasRootFilesData, type HasRootFilesErrors, type HasRootFilesResponse, type HasRootFilesResponses, type ICustomAttributeProvider, type IntPtr, type IsLicencedData, type IsLicencedErrors, type IsLicencedResponse, type IsLicencedResponses, LayoutKind, type Licence, type LicencedProduct, type LicenceInfo, LicenceStatus, type LicenceStatusView, LicenceType, type LicenceWritable, type MemberInfo, type MemberInfoWritable, MemberTypes, MethodAttributes, type MethodBase, type MethodBaseWritable, MethodImplAttributes, type MethodInfo, type MethodInfoWritable, type Module, type ModuleHandle, type ModuleWritable, ParameterAttributes, type ParameterInfo, type ParameterInfoWritable, PropertyAttributes, type PropertyInfo, type PropertyInfoWritable, type RemoveData, type RemoveErrors, type RemoveResponses, type RestorePoint, type RestorePointProcessingOptions, type RestorePointProcessingOptionsWritable, RestorePointStatus, type RuntimeFieldHandle, type RuntimeMethodHandle, type RuntimeTypeHandle, type SaveLicenceData, type SaveLicenceErrors, type SaveLicenceResponse, type SaveLicenceResponses, type ScanData, type ScanErrors, type ScanResponse, type ScanResponses, SecurityRuleSet, type StructLayoutAttribute, type StructLayoutAttributeWritable, type SyncEntity, type SyncEntityWritable, type SyncItem, type SyncItemPreviewResponse, type SyncItemWritable, type SyncPackAttributes, type SyncPackOptions, type Type, TypeAttributes, type TypeInfo, type TypeInfoWritable, type TypeWritable, type UdiModel, type USyncAction, type USyncActionView, type USyncActionWritable, type USyncChange } from './types.gen';
3
+ export { type Assembly, type AssemblyWritable, CallingConventions, ChangeDetailType, ChangeType, type CheckLegacyData, type CheckLegacyErrors, type CheckLegacyResponse, type CheckLegacyResponses, type CleanData, type CleanErrors, type CleanResponses, type ClientOptions, type ConstructorInfo, type ConstructorInfoWritable, type CustomAttributeData, type CustomAttributeDataWritable, type CustomAttributeNamedArgument, type CustomAttributeNamedArgumentWritable, type CustomAttributeTypedArgument, type CustomAttributeTypedArgumentWritable, DependencyFlags, EventAttributes, type EventInfo, type EventInfoWritable, type Exception, type ExceptionWritable, FieldAttributes, type FieldInfo, type FieldInfoWritable, GenericParameterAttributes, type GetActionViewData, type GetActionViewErrors, type GetActionViewResponse, type GetActionViewResponses, type GetAllData, type GetAllErrors, type GetAllResponse, type GetAllResponses, type GetLicenceData, type GetLicenceErrors, type GetLicenceResponse, type GetLicenceResponses, type GetLicenceStatusData, type GetLicenceStatusErrors, type GetLicenceStatusResponse, type GetLicenceStatusResponses, type GetPreviewData, type GetPreviewErrors, type GetPreviewResponse, type GetPreviewResponses, type GetReportData, type GetReportErrors, type GetReportResponse, type GetReportResponses, type GetRestorePointData, type GetRestorePointErrors, type GetRestorePointResponse, type GetRestorePointResponses, type GetSyncItemData, type GetSyncItemErrors, type GetSyncItemResponse, type GetSyncItemResponses, type HasRootFilesData, type HasRootFilesErrors, type HasRootFilesResponse, type HasRootFilesResponses, type ICustomAttributeProvider, type IntPtr, type IsLicencedData, type IsLicencedErrors, type IsLicencedResponse, type IsLicencedResponses, LayoutKind, type Licence, type LicencedProduct, type LicenceInfo, LicenceStatus, type LicenceStatusView, LicenceType, type LicenceWritable, type MemberInfo, type MemberInfoWritable, MemberTypes, MethodAttributes, type MethodBase, type MethodBaseWritable, MethodImplAttributes, type MethodInfo, type MethodInfoWritable, type Module, type ModuleHandle, type ModuleWritable, ParameterAttributes, type ParameterInfo, type ParameterInfoWritable, PropertyAttributes, type PropertyInfo, type PropertyInfoWritable, type RemoveData, type RemoveErrors, type RemoveResponses, type RequestTemporaryLicenceData, type RequestTemporaryLicenceErrors, type RequestTemporaryLicenceResponse, type RequestTemporaryLicenceResponses, type RestorePoint, type RestorePointProcessingOptions, type RestorePointProcessingOptionsWritable, RestorePointStatus, type RuntimeFieldHandle, type RuntimeMethodHandle, type RuntimeTypeHandle, type SaveLicenceData, type SaveLicenceErrors, type SaveLicenceResponse, type SaveLicenceResponses, type ScanData, type ScanErrors, type ScanResponse, type ScanResponses, SecurityRuleSet, type StructLayoutAttribute, type StructLayoutAttributeWritable, type SyncEntity, type SyncEntityWritable, type SyncItem, type SyncItemPreviewResponse, type SyncItemWritable, type SyncPackAttributes, type SyncPackOptions, type TemporaryLicenceResult, type Type, TypeAttributes, type TypeInfo, type TypeInfoWritable, type TypeWritable, type UdiModel, type USyncAction, type USyncActionView, type USyncActionWritable, type USyncChange } from './types.gen';
@@ -1,5 +1,5 @@
1
1
  import type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';
2
- import type { CheckLegacyData, CheckLegacyErrors, CheckLegacyResponses, CleanData, CleanErrors, CleanResponses, GetActionViewData, GetActionViewErrors, GetActionViewResponses, GetAllData, GetAllErrors, GetAllResponses, GetLicenceData, GetLicenceErrors, GetLicenceResponses, GetLicenceStatusData, GetLicenceStatusErrors, GetLicenceStatusResponses, GetPreviewData, GetPreviewErrors, GetPreviewResponses, GetReportData, GetReportErrors, GetReportResponses, GetRestorePointData, GetRestorePointErrors, GetRestorePointResponses, GetSyncItemData, GetSyncItemErrors, GetSyncItemResponses, HasRootFilesData, HasRootFilesErrors, HasRootFilesResponses, IsLicencedData, IsLicencedErrors, IsLicencedResponses, RemoveData, RemoveErrors, RemoveResponses, SaveLicenceData, SaveLicenceErrors, SaveLicenceResponses, ScanData, ScanErrors, ScanResponses } from './types.gen';
2
+ import type { CheckLegacyData, CheckLegacyErrors, CheckLegacyResponses, CleanData, CleanErrors, CleanResponses, GetActionViewData, GetActionViewErrors, GetActionViewResponses, GetAllData, GetAllErrors, GetAllResponses, GetLicenceData, GetLicenceErrors, GetLicenceResponses, GetLicenceStatusData, GetLicenceStatusErrors, GetLicenceStatusResponses, GetPreviewData, GetPreviewErrors, GetPreviewResponses, GetReportData, GetReportErrors, GetReportResponses, GetRestorePointData, GetRestorePointErrors, GetRestorePointResponses, GetSyncItemData, GetSyncItemErrors, GetSyncItemResponses, HasRootFilesData, HasRootFilesErrors, HasRootFilesResponses, IsLicencedData, IsLicencedErrors, IsLicencedResponses, RemoveData, RemoveErrors, RemoveResponses, RequestTemporaryLicenceData, RequestTemporaryLicenceErrors, RequestTemporaryLicenceResponses, SaveLicenceData, SaveLicenceErrors, SaveLicenceResponses, ScanData, ScanErrors, ScanResponses } from './types.gen';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -25,6 +25,7 @@ export declare class LicenceService {
25
25
  static getLicence<ThrowOnError extends boolean = true>(options?: Options<GetLicenceData, ThrowOnError>): RequestResult<GetLicenceResponses, GetLicenceErrors, ThrowOnError>;
26
26
  static getLicenceStatus<ThrowOnError extends boolean = true>(options?: Options<GetLicenceStatusData, ThrowOnError>): RequestResult<GetLicenceStatusResponses, GetLicenceStatusErrors, ThrowOnError>;
27
27
  static isLicenced<ThrowOnError extends boolean = true>(options?: Options<IsLicencedData, ThrowOnError>): RequestResult<IsLicencedResponses, IsLicencedErrors, ThrowOnError>;
28
+ static requestTemporaryLicence<ThrowOnError extends boolean = true>(options?: Options<RequestTemporaryLicenceData, ThrowOnError>): RequestResult<RequestTemporaryLicenceResponses, RequestTemporaryLicenceErrors, ThrowOnError>;
28
29
  static saveLicence<ThrowOnError extends boolean = true>(options?: Options<SaveLicenceData, ThrowOnError>): RequestResult<SaveLicenceResponses, SaveLicenceErrors, ThrowOnError>;
29
30
  }
30
31
  export declare class RestoreService {
@@ -54,6 +54,13 @@ export class LicenceService {
54
54
  ...options
55
55
  });
56
56
  }
57
+ static requestTemporaryLicence(options) {
58
+ return (options?.client ?? client).post({
59
+ security: [{ scheme: 'bearer', type: 'http' }],
60
+ url: '/umbraco/usync/api/v1/Complete/RequestTemporaryLicence',
61
+ ...options
62
+ });
63
+ }
57
64
  static saveLicence(options) {
58
65
  return (options?.client ?? client).post({
59
66
  security: [{ scheme: 'bearer', type: 'http' }],
@@ -246,6 +246,7 @@ export type Licence = {
246
246
  readonly autoRenews: boolean;
247
247
  readonly products: Array<LicencedProduct>;
248
248
  readonly message?: string | null;
249
+ readonly isOlderVersion: boolean;
249
250
  readonly checkedDomain?: string | null;
250
251
  };
251
252
  export type LicenceInfo = {
@@ -276,6 +277,7 @@ export type LicenceStatusView = {
276
277
  checkedDomain?: string | null;
277
278
  hasExpiry: boolean;
278
279
  autoRenews: boolean;
280
+ canRequestTemporaryLicence: boolean;
279
281
  };
280
282
  export declare enum LicenceType {
281
283
  NONE = "None",
@@ -605,6 +607,17 @@ export type SyncPackOptions = {
605
607
  createRestorePoint: boolean;
606
608
  skipReport: boolean;
607
609
  };
610
+ export type TemporaryLicenceResult = {
611
+ success: boolean;
612
+ status: string;
613
+ message: string;
614
+ group: string;
615
+ key: string;
616
+ domains: string;
617
+ expires: string;
618
+ saved: boolean;
619
+ licenceInConfig: boolean;
620
+ };
608
621
  export type Type = {
609
622
  readonly name: string;
610
623
  readonly customAttributes: Array<CustomAttributeData>;
@@ -1117,6 +1130,25 @@ export type IsLicencedResponses = {
1117
1130
  200: boolean;
1118
1131
  };
1119
1132
  export type IsLicencedResponse = IsLicencedResponses[keyof IsLicencedResponses];
1133
+ export type RequestTemporaryLicenceData = {
1134
+ body?: never;
1135
+ path?: never;
1136
+ query?: never;
1137
+ url: '/umbraco/usync/api/v1/Complete/RequestTemporaryLicence';
1138
+ };
1139
+ export type RequestTemporaryLicenceErrors = {
1140
+ /**
1141
+ * The resource is protected and requires an authentication token
1142
+ */
1143
+ 401: unknown;
1144
+ };
1145
+ export type RequestTemporaryLicenceResponses = {
1146
+ /**
1147
+ * OK
1148
+ */
1149
+ 200: TemporaryLicenceResult;
1150
+ };
1151
+ export type RequestTemporaryLicenceResponse = RequestTemporaryLicenceResponses[keyof RequestTemporaryLicenceResponses];
1120
1152
  export type SaveLicenceData = {
1121
1153
  body?: LicenceInfo;
1122
1154
  path?: never;
@@ -12,6 +12,21 @@ declare const _default: {
12
12
  licenceSubscriptionInfo: string;
13
13
  licenceClearHeading: string;
14
14
  licenceClearContent: string;
15
+ temporaryHeadline: string;
16
+ temporaryDescription: string;
17
+ temporaryButton: string;
18
+ temporaryConfirmHeadline: string;
19
+ temporaryConfirmContent: string;
20
+ temporaryConfirmBuy: string;
21
+ temporaryConfirmLabel: string;
22
+ temporarySaved: string;
23
+ temporarySavedExpires: string;
24
+ temporaryUpgrade: string;
25
+ temporaryInConfigHeadline: string;
26
+ temporaryInConfig: string;
27
+ temporaryKey: string;
28
+ temporaryDomains: string;
29
+ temporaryFailed: string;
15
30
  };
16
31
  };
17
32
  export default _default;
@@ -13,5 +13,20 @@ export default {
13
13
  <p>For security reasons we don't show you that information in the umbraco back office but you can request that we send the details again</p>`,
14
14
  licenceClearHeading: 'Clear licence details?',
15
15
  licenceClearContent: 'Do you want to remove this current licence details? Once cleared you will need to re-enter your licence details.',
16
+ temporaryHeadline: 'This key is for an older version',
17
+ temporaryDescription: 'You can get a one-off 60 day licence while you upgrade.',
18
+ temporaryButton: 'Get a temporary licence',
19
+ temporaryConfirmHeadline: 'Get a temporary licence?',
20
+ temporaryConfirmContent: 'This gives you a licence that lasts 60 days, so you can keep working while you upgrade your licence. Each key can only get one temporary licence.',
21
+ temporaryConfirmBuy: 'You will need to buy an upgraded licence before the temporary one runs out.',
22
+ temporaryConfirmLabel: 'Get licence',
23
+ temporarySaved: 'Your temporary licence has been saved.',
24
+ temporarySavedExpires: 'Your temporary licence has been saved. It expires on {0}.',
25
+ temporaryUpgrade: 'Upgrade your licence',
26
+ temporaryInConfigHeadline: 'Your temporary licence',
27
+ temporaryInConfig: 'Your licence is set in appsettings, so it can not be saved here. Replace the key and domains in the <code>uSync:Complete:Licence</code> section of your appsettings with these values, then restart the site.',
28
+ temporaryKey: 'Key',
29
+ temporaryDomains: 'Domains',
30
+ temporaryFailed: 'Unable to get a temporary licence',
16
31
  },
17
32
  };
@@ -1,7 +1,7 @@
1
1
  import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
2
2
  import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
3
3
  import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
4
- import { Licence, LicenceInfo, LicenceStatusView } from '@jumoo/usync-expansions';
4
+ import { Licence, LicenceInfo, LicenceStatusView, TemporaryLicenceResult } from '@jumoo/usync-expansions';
5
5
  import './components/licence-notice';
6
6
  export declare class uSyncLicenceContext extends UmbControllerBase {
7
7
  #private;
@@ -10,6 +10,11 @@ export declare class uSyncLicenceContext extends UmbControllerBase {
10
10
  constructor(host: UmbControllerHost);
11
11
  refresh(): Promise<void>;
12
12
  saveLicence(licence: LicenceInfo): Promise<void>;
13
+ /**
14
+ * Ask the jumoo site for a one-off 60 day licence for a key from an older version.
15
+ * When the key is saved we refresh, so the page shows the new expiry.
16
+ */
17
+ requestTemporaryLicence(): Promise<TemporaryLicenceResult | undefined>;
13
18
  loadLicence(): Promise<void>;
14
19
  getLicenceStatus(): Promise<void>;
15
20
  }
@@ -48,6 +48,17 @@ export class uSyncLicenceContext extends UmbControllerBase {
48
48
  });
49
49
  }
50
50
  }
51
+ /**
52
+ * Ask the jumoo site for a one-off 60 day licence for a key from an older version.
53
+ * When the key is saved we refresh, so the page shows the new expiry.
54
+ */
55
+ async requestTemporaryLicence() {
56
+ const { data } = await __classPrivateFieldGet(this, _uSyncLicenceContext_repository, "f").requestTemporaryLicence();
57
+ if (data?.saved) {
58
+ await this.refresh();
59
+ }
60
+ return data;
61
+ }
51
62
  async loadLicence() {
52
63
  const { data } = await __classPrivateFieldGet(this, _uSyncLicenceContext_repository, "f").getLicence();
53
64
  if (data) {
@@ -1,16 +1,23 @@
1
1
  import { LitElement, nothing } from '@umbraco-cms/backoffice/external/lit';
2
- import { LicenceInfo, LicenceStatusView } from '@jumoo/usync-expansions';
2
+ import { LicenceInfo, LicenceStatusView, TemporaryLicenceResult } from '@jumoo/usync-expansions';
3
3
  import { UUIButtonState } from '@umbraco-cms/backoffice/external/uui';
4
4
  declare const uSyncLicenceViewElement_base: import("@umbraco-cms/backoffice/extension-api").HTMLElementConstructor<import("@umbraco-cms/backoffice/element-api").UmbElement> & typeof LitElement;
5
5
  export declare class uSyncLicenceViewElement extends uSyncLicenceViewElement_base {
6
6
  #private;
7
7
  saveState?: UUIButtonState;
8
+ private _temporaryResult?;
9
+ private _requestingTemporary;
8
10
  constructor();
9
11
  connectedCallback(): void;
10
12
  licence: LicenceInfo;
11
13
  licenceStatus: LicenceStatusView | undefined;
12
14
  render(): import("lit-html").TemplateResult<1>;
13
15
  renderStatus(): import("lit-html").TemplateResult<1>;
16
+ renderTemporary(): typeof nothing | import("lit-html").TemplateResult<1>;
17
+ renderTemporarySaved(result: TemporaryLicenceResult): import("lit-html").TemplateResult<1>;
18
+ renderTemporaryInConfig(result: TemporaryLicenceResult): import("lit-html").TemplateResult<1>;
19
+ renderCopyValue(labelKey: string, value: string): import("lit-html").TemplateResult<1>;
20
+ renderUpgradeButton(): import("lit-html").TemplateResult<1>;
14
21
  renderDetails(): typeof nothing | import("lit-html").TemplateResult<1>;
15
22
  renderSubscription(): typeof nothing | import("lit-html").TemplateResult<1>;
16
23
  renderExpiration(): typeof nothing | import("lit-html").TemplateResult<1>;
@@ -15,16 +15,19 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
16
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
17
  };
18
- var _uSyncLicenceViewElement_instances, _uSyncLicenceViewElement_licenceContext, _uSyncLicenceViewElement_saveLicence, _uSyncLicenceViewElement_updateDomains, _uSyncLicenceViewElement_updateKey, _uSyncLicenceViewElement_clearLicence;
18
+ var _uSyncLicenceViewElement_instances, _uSyncLicenceViewElement_licenceContext, _uSyncLicenceViewElement_saveLicence, _uSyncLicenceViewElement_updateDomains, _uSyncLicenceViewElement_updateKey, _uSyncLicenceViewElement_clearLicence, _uSyncLicenceViewElement_onRequestTemporary;
19
19
  import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
20
20
  import { LitElement, css, customElement, html, nothing, state, when, } from '@umbraco-cms/backoffice/external/lit';
21
21
  import { USYNC_LICENCE_CONTEXT_TOKEN, } from '@jumoo/usync-expansions';
22
22
  import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
23
23
  import { UMB_CONFIRM_MODAL, UMB_MODAL_MANAGER_CONTEXT, } from '@umbraco-cms/backoffice/modal';
24
+ import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';
25
+ const USYNC_UPGRADE_URL = 'https://checkout.jumoo.co.uk/?p=usync-upgrade';
24
26
  let uSyncLicenceViewElement = class uSyncLicenceViewElement extends UmbElementMixin(LitElement) {
25
27
  constructor() {
26
28
  super();
27
29
  _uSyncLicenceViewElement_instances.add(this);
30
+ this._requestingTemporary = false;
28
31
  _uSyncLicenceViewElement_licenceContext.set(this, void 0);
29
32
  this.licence = {
30
33
  key: 'key',
@@ -56,8 +59,8 @@ let uSyncLicenceViewElement = class uSyncLicenceViewElement extends UmbElementMi
56
59
  return html `
57
60
  <umb-body-layout>
58
61
  <div class="layout">
59
- ${this.renderStatus()} ${this.renderDetails()} ${this.renderSubscription()}
60
- ${this.renderExpiration()}
62
+ ${this.renderStatus()} ${this.renderDetails()} ${this.renderTemporary()}
63
+ ${this.renderSubscription()} ${this.renderExpiration()}
61
64
  </div></umb-body-layout
62
65
  >
63
66
  `;
@@ -67,6 +70,71 @@ let uSyncLicenceViewElement = class uSyncLicenceViewElement extends UmbElementMi
67
70
  <usync-licence-status .licenceStatus=${this.licenceStatus}></usync-licence-status>
68
71
  `;
69
72
  }
73
+ renderTemporary() {
74
+ const result = this._temporaryResult;
75
+ if (result?.licenceInConfig)
76
+ return this.renderTemporaryInConfig(result);
77
+ if (result?.saved)
78
+ return this.renderTemporarySaved(result);
79
+ if (!this.licenceStatus?.canRequestTemporaryLicence)
80
+ return nothing;
81
+ return html `<uui-box class="alert alert-warning">
82
+ <div class="temporary-content">
83
+ <uui-icon name="icon-alert"></uui-icon>
84
+ <div class="temporary-text">
85
+ <strong>${this.localize.term('usynccomplete_temporaryHeadline')}</strong>
86
+ <div>${this.localize.term('usynccomplete_temporaryDescription')}</div>
87
+ </div>
88
+ <uui-button
89
+ look="primary"
90
+ color="positive"
91
+ label=${this.localize.term('usynccomplete_temporaryButton')}
92
+ .state=${this._requestingTemporary ? 'waiting' : undefined}
93
+ ?disabled=${this._requestingTemporary}
94
+ @click=${__classPrivateFieldGet(this, _uSyncLicenceViewElement_instances, "m", _uSyncLicenceViewElement_onRequestTemporary)}></uui-button>
95
+ </div>
96
+ </uui-box>`;
97
+ }
98
+ renderTemporarySaved(result) {
99
+ return html `<uui-box class="alert alert-positive">
100
+ <div class="temporary-content">
101
+ <uui-icon name="icon-check"></uui-icon>
102
+ <div class="temporary-text">
103
+ ${result.expires
104
+ ? this.localize.term('usynccomplete_temporarySavedExpires', new Date(result.expires).toDateString())
105
+ : this.localize.term('usynccomplete_temporarySaved')}
106
+ </div>
107
+ ${this.renderUpgradeButton()}
108
+ </div>
109
+ </uui-box>`;
110
+ }
111
+ renderTemporaryInConfig(result) {
112
+ return html `<uui-box
113
+ headline=${this.localize.term('usynccomplete_temporaryInConfigHeadline')}>
114
+ <p><umb-localize key="usynccomplete_temporaryInConfig"></umb-localize></p>
115
+ ${this.renderCopyValue('usynccomplete_temporaryDomains', result.domains)}
116
+ ${this.renderCopyValue('usynccomplete_temporaryKey', result.key)}
117
+ ${this.renderUpgradeButton()}
118
+ </uui-box>`;
119
+ }
120
+ renderCopyValue(labelKey, value) {
121
+ const label = this.localize.term(labelKey);
122
+ return html `<umb-property-layout label=${label}>
123
+ <div slot="editor" class="copy-value">
124
+ <uui-input readonly label=${label} .value=${value}></uui-input>
125
+ <uui-button-copy-text .text=${value} label=${label}></uui-button-copy-text>
126
+ </div>
127
+ </umb-property-layout>`;
128
+ }
129
+ renderUpgradeButton() {
130
+ return html `<uui-button
131
+ look="secondary"
132
+ color="positive"
133
+ label=${this.localize.term('usynccomplete_temporaryUpgrade')}
134
+ href=${USYNC_UPGRADE_URL}
135
+ target="_blank"
136
+ rel="noopener noreferrer"></uui-button>`;
137
+ }
70
138
  renderDetails() {
71
139
  return this.licenceStatus
72
140
  ? html `
@@ -89,8 +157,7 @@ let uSyncLicenceViewElement = class uSyncLicenceViewElement extends UmbElementMi
89
157
  label="domains"
90
158
  @input=${__classPrivateFieldGet(this, _uSyncLicenceViewElement_instances, "m", _uSyncLicenceViewElement_updateDomains)}
91
159
  .value=${this.licence.domains}
92
- .readonly=${this.licenceStatus?.licenceType ===
93
- 'Subscription'}></uui-input>
160
+ .readonly=${this.licenceStatus?.licenceType === 'Subscription'}></uui-input>
94
161
  </div>
95
162
  </umb-property-layout>
96
163
 
@@ -211,6 +278,50 @@ _uSyncLicenceViewElement_clearLicence = async function _uSyncLicenceViewElement_
211
278
  // console.log('cancel');
212
279
  });
213
280
  };
281
+ _uSyncLicenceViewElement_onRequestTemporary = async function _uSyncLicenceViewElement_onRequestTemporary() {
282
+ if (!__classPrivateFieldGet(this, _uSyncLicenceViewElement_licenceContext, "f"))
283
+ return;
284
+ const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
285
+ if (!modalManager)
286
+ return;
287
+ const confirmed = await modalManager
288
+ .open(this, UMB_CONFIRM_MODAL, {
289
+ data: {
290
+ headline: this.localize.term('usynccomplete_temporaryConfirmHeadline'),
291
+ content: html `<p>
292
+ ${this.localize.term('usynccomplete_temporaryConfirmContent')}
293
+ </p>
294
+ <p>${this.localize.term('usynccomplete_temporaryConfirmBuy')}</p>`,
295
+ confirmLabel: this.localize.term('usynccomplete_temporaryConfirmLabel'),
296
+ color: 'positive',
297
+ },
298
+ })
299
+ .onSubmit()
300
+ .then(() => true)
301
+ .catch(() => false);
302
+ if (!confirmed)
303
+ return;
304
+ this._requestingTemporary = true;
305
+ try {
306
+ const result = await __classPrivateFieldGet(this, _uSyncLicenceViewElement_licenceContext, "f").requestTemporaryLicence();
307
+ if (!result)
308
+ return;
309
+ if (!result.success) {
310
+ const notifications = await this.getContext(UMB_NOTIFICATION_CONTEXT);
311
+ notifications?.peek('danger', {
312
+ data: {
313
+ headline: this.localize.term('usynccomplete_temporaryFailed'),
314
+ message: result.message,
315
+ },
316
+ });
317
+ return;
318
+ }
319
+ this._temporaryResult = result;
320
+ }
321
+ finally {
322
+ this._requestingTemporary = false;
323
+ }
324
+ };
214
325
  uSyncLicenceViewElement.styles = [
215
326
  UmbTextStyles,
216
327
  css `
@@ -228,6 +339,32 @@ uSyncLicenceViewElement.styles = [
228
339
  padding-left: calc(200px + var(--uui-size-layout-2));
229
340
  }
230
341
 
342
+ .temporary-content {
343
+ display: flex;
344
+ align-items: center;
345
+ justify-content: space-between;
346
+ gap: var(--uui-size-space-5);
347
+ }
348
+
349
+ .temporary-content > uui-icon {
350
+ font-size: 26pt;
351
+ flex-shrink: 0;
352
+ }
353
+
354
+ .temporary-text {
355
+ flex-grow: 1;
356
+ }
357
+
358
+ .alert-positive {
359
+ background-color: var(--uui-color-positive);
360
+ color: var(--uui-color-positive-contrast);
361
+ }
362
+
363
+ .copy-value {
364
+ display: flex;
365
+ gap: var(--uui-size-space-2);
366
+ }
367
+
231
368
  .alert-content {
232
369
  display: flex;
233
370
  justify-content: space-between;
@@ -257,6 +394,12 @@ uSyncLicenceViewElement.styles = [
257
394
  __decorate([
258
395
  state()
259
396
  ], uSyncLicenceViewElement.prototype, "saveState", void 0);
397
+ __decorate([
398
+ state()
399
+ ], uSyncLicenceViewElement.prototype, "_temporaryResult", void 0);
400
+ __decorate([
401
+ state()
402
+ ], uSyncLicenceViewElement.prototype, "_requestingTemporary", void 0);
260
403
  __decorate([
261
404
  state()
262
405
  ], uSyncLicenceViewElement.prototype, "licence", void 0);
@@ -12,4 +12,5 @@ export declare class uSyncLicenceRepository extends UmbControllerBase {
12
12
  getLicenceStatus(): Promise<import("@umbraco-cms/backoffice/repository").UmbDataSourceResponse<import("@jumoo/usync-expansions").LicenceStatusView>>;
13
13
  isLicenced(): Promise<import("@umbraco-cms/backoffice/repository").UmbDataSourceResponse<boolean>>;
14
14
  saveLicence(licence: LicenceInfo): Promise<import("@umbraco-cms/backoffice/repository").UmbDataSourceResponse<boolean>>;
15
+ requestTemporaryLicence(): Promise<import("@umbraco-cms/backoffice/repository").UmbDataSourceResponse<import("@jumoo/usync-expansions").TemporaryLicenceResult>>;
15
16
  }
@@ -38,5 +38,8 @@ export class uSyncLicenceRepository extends UmbControllerBase {
38
38
  async saveLicence(licence) {
39
39
  return __classPrivateFieldGet(this, _uSyncLicenceRepository_licenceDataSource, "f").saveLicence(licence);
40
40
  }
41
+ async requestTemporaryLicence() {
42
+ return __classPrivateFieldGet(this, _uSyncLicenceRepository_licenceDataSource, "f").requestTemporaryLicence();
43
+ }
41
44
  }
42
45
  _uSyncLicenceRepository_licenceDataSource = new WeakMap();
@@ -1,5 +1,5 @@
1
1
  import { UmbDataSourceResponse } from '@umbraco-cms/backoffice/repository';
2
- import { Licence, LicenceInfo, LicenceStatusView } from '@jumoo/usync-expansions';
2
+ import { Licence, LicenceInfo, LicenceStatusView, TemporaryLicenceResult } from '@jumoo/usync-expansions';
3
3
  import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
4
4
  export interface uSyncLicenceSource {
5
5
  }
@@ -12,4 +12,5 @@ export declare class uSyncLicenceSource implements uSyncLicenceSource {
12
12
  getLicenceStatus(product: string, version: string): Promise<UmbDataSourceResponse<LicenceStatusView>>;
13
13
  isLicenced(product: string, version: string): Promise<UmbDataSourceResponse<boolean>>;
14
14
  saveLicence(licence: LicenceInfo): Promise<UmbDataSourceResponse<boolean>>;
15
+ requestTemporaryLicence(): Promise<UmbDataSourceResponse<TemporaryLicenceResult>>;
15
16
  }
@@ -35,5 +35,8 @@ export class uSyncLicenceSource {
35
35
  async saveLicence(licence) {
36
36
  return await tryExecute(__classPrivateFieldGet(this, _uSyncLicenceSource_host, "f"), LicenceService.saveLicence({ body: licence }));
37
37
  }
38
+ async requestTemporaryLicence() {
39
+ return await tryExecute(__classPrivateFieldGet(this, _uSyncLicenceSource_host, "f"), LicenceService.requestTemporaryLicence());
40
+ }
38
41
  }
39
42
  _uSyncLicenceSource_host = new WeakMap();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jumoo/usync-expansions",
3
3
  "license": "Custom",
4
- "version": "17.6.1-prerelease.41",
4
+ "version": "17.6.1-prerelease.43",
5
5
  "type": "module",
6
6
  "description": "uSync.Expansions.Assets",
7
7
  "repository": {
@@ -40,7 +40,7 @@
40
40
  "devDependencies": {
41
41
  "@hey-api/openapi-ts": "^0.99.0",
42
42
  "@jumoo/processing": "https://registry.npmjs.org/@jumoo/processing/-/processing-17.5.2.tgz",
43
- "@jumoo/usync": "^17.6.1-prerelease.21",
43
+ "@jumoo/usync": "^17.6.1",
44
44
  "@umbraco-cms/backoffice": "^17.6.2",
45
45
  "chalk": "^6.0.0",
46
46
  "cross-env": "^10.1.0",