PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / trunk
Starter Sites & Templates by Neve vtrunk
1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / assets / src / Components / CloudLibrary / common.js
templates-patterns-collection / assets / src / Components / CloudLibrary Last commit date
DemoSiteTemplatesImport.js 3 years ago FeedbackNotice.js 1 year ago Filters.js 1 year ago ImportTemplatesModal.js 1 year ago Library.js 1 year ago ListItem.js 1 year ago PreviewFrame.js 1 year ago common.js 2 years ago
common.js
234 lines
1 /* global tiobDash, localStorage */
2 import apiFetch from '@wordpress/api-fetch';
3
4 import { stringifyUrl } from 'query-string';
5 import { v4 as uuidv4 } from 'uuid';
6 import { models, loadPromise } from '@wordpress/api';
7 import { cleanTemplateContent } from '../../../../shared/utils';
8
9 export const changeOption = ( option, value ) => {
10 const model = new models.Settings( {
11 [ option ]: value,
12 } );
13
14 return new Promise( ( resolve ) => {
15 model.save().then( ( r ) => {
16 if ( ! r || ! r[ option ] === value ) {
17 resolve( { success: false } );
18 }
19
20 resolve( { success: true } );
21 } );
22 } );
23 };
24
25 export const fetchOptions = () => {
26 let settings;
27 return loadPromise.then( () => {
28 settings = new models.Settings();
29 return settings.fetch();
30 } );
31 };
32
33 export const fetchLibrary = async (
34 premade = false,
35 additionalParams = {}
36 ) => {
37 console.warn( {additionalParams} );
38
39 // if ( additionalParams?.type ) {
40 // if ( Array.isArray( additionalParams.type ) ) {
41 // additionalParams.type = additionalParams.type.join( ',' );
42 // }
43 // }
44
45 const url = stringifyUrl( {
46 url: tiobDash.endpoint + ( premade ? 'page-templates' : 'templates' ),
47 query: {
48 cache: localStorage.getItem( 'tpcCacheBuster' ),
49 ...tiobDash.params,
50 ...additionalParams,
51 },
52 }, { arrayFormat: 'bracket' } );
53 console.log( {url} );
54
55 try {
56 const response = await apiFetch( {
57 url,
58 method: 'GET',
59 parse: false,
60 } );
61
62 if ( response.ok ) {
63 const templates = await response.json();
64
65 if ( templates.message ) {
66 return { success: false, message: templates.message };
67 }
68
69 const total = response.headers.get( 'x-wp-totalpages' );
70 return {
71 success: true,
72 total,
73 templates,
74 };
75 }
76 } catch ( error ) {
77 if ( error.message ) {
78 return { success: false, message: error.message };
79 }
80 }
81 };
82
83 export const updateTemplate = async ( id, name ) => {
84 const url = stringifyUrl( {
85 url: tiobDash.endpoint + 'templates/' + id,
86 query: {
87 cache: localStorage.getItem( 'tpcCacheBuster' ),
88 ...tiobDash.params,
89 template_id: id,
90 template_name: name,
91 },
92 } );
93
94 try {
95 await apiFetch( {
96 url,
97 method: 'POST',
98 } );
99 localStorage.setItem( 'tpcCacheBuster', uuidv4() );
100
101 return { success: true };
102 } catch ( error ) {
103 if ( error.message ) {
104 return { success: false, message: error.message };
105 }
106 }
107 };
108
109 export const duplicateTemplate = async ( id ) => {
110 const url = stringifyUrl( {
111 url: `${ tiobDash.endpoint }templates/${ id }/clone`,
112 query: {
113 cache: localStorage.getItem( 'tpcCacheBuster' ),
114 ...tiobDash.params,
115 },
116 } );
117
118 try {
119 await apiFetch( {
120 url,
121 method: 'POST',
122 } );
123 localStorage.setItem( 'tpcCacheBuster', uuidv4() );
124
125 return { success: true };
126 } catch ( error ) {
127 if ( error.message ) {
128 return { successs: false, message: error.message };
129 }
130 }
131 };
132
133 export const deleteTemplate = async ( id ) => {
134 const url = stringifyUrl( {
135 url: `${ tiobDash.endpoint }templates/${ id }`,
136 query: {
137 cache: localStorage.getItem( 'tpcCacheBuster' ),
138 _method: 'DELETE',
139 ...tiobDash.params,
140 },
141 } );
142
143 try {
144 await apiFetch( { url, method: 'POST' } );
145 localStorage.setItem( 'tpcCacheBuster', uuidv4() );
146
147 return { success: true };
148 } catch ( error ) {
149 if ( error.message ) {
150 return { success: false, message: error.message };
151 }
152 }
153 };
154
155 export const fetchBulkData = async ( templates ) => {
156 const url = stringifyUrl(
157 {
158 url: `${ tiobDash.endpoint }templates/bulk-import`,
159 query: {
160 templates,
161 cache: localStorage.getItem( 'tpcCacheBuster' ),
162 ...tiobDash.params,
163 },
164 },
165 { arrayFormat: 'index' }
166 );
167
168 try {
169 const response = await apiFetch( { url, method: 'GET', parse: false } );
170
171 if ( response.ok ) {
172 if ( response.message ) {
173 return { success: false, message: response.message };
174 }
175 const data = await response.json();
176
177 if ( data.message ) {
178 return { success: false, message: data.message };
179 }
180
181 if ( Array.isArray( data ) ) {
182 data.forEach( ( template ) => {
183 cleanTemplateContent( template, ( element ) => {
184 // Remove imported images ID since they are not available on the current site via Media Library.
185 delete element?.settings?.image?.id;
186 delete element?.settings?.background_image?.id;
187 delete element?.settings?.background_overlay_image?.id;
188 } );
189 } );
190 }
191
192 return { success: true, templates: data };
193 }
194 } catch ( error ) {
195 if ( error.message ) {
196 return { success: false, message: error.message };
197 }
198 }
199 };
200
201 export const getUserTemplateData = async ( template ) => {
202 const url = stringifyUrl( {
203 url: `${ tiobDash.endpoint }templates/${ template }/import`,
204 query: {
205 cache: localStorage.getItem( 'tpcCacheBuster' ),
206 ...tiobDash.params,
207 },
208 } );
209
210 let content = {};
211
212 try {
213 const response = await apiFetch( {
214 url,
215 method: 'GET',
216 parse: false,
217 } );
218
219 if ( response.ok ) {
220 content = await response.json();
221
222 if ( content.message ) {
223 return { success: false, message: content.message };
224 }
225 }
226 } catch ( error ) {
227 if ( error.message ) {
228 return { success: false, message: error.message };
229 }
230 }
231
232 return { success: true, templates: [ content ] };
233 };
234