From d611c7ccace2b8adfa0114b35666e279fa472166 Mon Sep 17 00:00:00 2001 From: Joao-pina-fernandes Date: Tue, 13 Mar 2018 11:46:05 +0000 Subject: [PATCH] In the cases that we don't have the credentials object, p12 fetch fixed We now fetch the first completed submission that has the correct certification values (in store) or published on Enterprise. --- js/interface.js | 146 ++++++++++++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 60 deletions(-) diff --git a/js/interface.js b/js/interface.js index ec3cf44..54077ec 100644 --- a/js/interface.js +++ b/js/interface.js @@ -11,6 +11,8 @@ var appStoreCertificateCreated = false; var appStoreCertificateReplaced = false; var enterpriseCertificateCreated = false; var enterpriseCertificateReplaced = false; +var previousAppStoreSubmission = {}; +var previousEnterpriseStoreSubmission = {}; var appStorePreviousCredential = undefined; var appStoreFileField = undefined; var appStoreTeamId = undefined; @@ -84,9 +86,9 @@ function loadAppStoreData() { var hasAppId = !_.isUndefined(appStoreSubmission.data['iTunesAppId']); /* APP NAME */ - if (name === "fl-store-appName") { + if (name === "fl-store-appName") { $('[name="' + name + '"]').val(!_.isUndefined(appStoreSubmission.data[name]) ? appStoreSubmission.data[name] : appName); - + if (!_.isUndefined($('[name="' + name + '"]').val()) && hasAppId) { $('[name="' + name + '"]').attr('readonly', 'readonly'); } @@ -121,7 +123,7 @@ function loadAppStoreData() { if (name === "fl-store-language" && !_.isUndefined($('[name="' + name + '"]').val()) && (hasAppId || appStoreSubmissionInStore)) { $('.dll-store-language').addClass('hidden'); $('#fl-store-language').prop('required', false); - $('.fl-store-language-placeholder').removeClass('hidden'); + $('.fl-store-language-placeholder').removeClass('hidden'); } return; } @@ -173,8 +175,8 @@ function loadAppStoreData() { /* Manual release */ if (name === "fl-store-manualRelease") { if (!_.isUndefined(appStoreSubmission.data[name])) { - $('#' + name).prop('checked', appStoreSubmission.data[name]); - } + $('#' + name).prop('checked', appStoreSubmission.data[name]); + } return; } @@ -216,15 +218,15 @@ function loadAppStoreData() { var $loginButton = $('.login-appStore-button'); $loginButton.html('Logging in'); $loginButton.addClass('disabled'); - $('#fl-store-appDevPass').addClass('disabled'); + $('#fl-store-appDevPass').addClass('disabled'); $('#fl-store-appDevLogin').addClass('disabled'); - getCredential(organizationID, appStoreSubmission.data['fl-credentials']).then(function (credential) { + getCredential(organizationID, appStoreSubmission.data['fl-credentials']).then(function (credential) { return appStoreTeamSetup(credential.email, $loginButton); }).catch(function (error) { //we don't need to handle errors for automatic login $loginButton.html('Log in'); $('#fl-store-appDevLogin').removeClass('disabled'); - $('#fl-store-appDevPass').removeClass('disabled'); + $('#fl-store-appDevPass').removeClass('disabled'); $loginButton.removeClass('disabled'); Fliplet.Widget.autosize(); }); @@ -251,11 +253,11 @@ function appStoreTeamSetup(devEmail, loginButton) { appStoreTeams.forEach(function(team, i) { $('.appStore-team').append(''); }); - + $('#fl-store-appDevLogin').removeClass('disabled'); - $('#fl-store-appDevPass').removeClass('disabled'); + $('#fl-store-appDevPass').removeClass('disabled'); $('#fl-store-appDevLogin').val(devEmail); - $('#fl-store-appDevPass').prop('required', false); + $('#fl-store-appDevPass').prop('required', false); loginButton.html('Log in'); loginButton.removeClass('disabled'); $('.appStore-logged-email').html(devEmail); @@ -349,7 +351,7 @@ function loadEnterpriseData() { $loginButton.addClass('disabled'); $('#fl-ent-appDevLogin').addClass('disabled'); $('#fl-ent-appDevPass').addClass('disabled'); - getCredential(organizationID, enterpriseSubmission.data['fl-credentials']).then(function (credential) { + getCredential(organizationID, enterpriseSubmission.data['fl-credentials']).then(function (credential) { return enterpriseTeamSetup(credential.email, $loginButton); }).catch(function (error) { //we don't need to handle errors for automatic login @@ -476,7 +478,7 @@ function submissionBuild(appSubmission, origin) { // Auto increments the version number and saves the submission var newVersionNumber = incrementVersionNumber(appStoreSubmission.data['fl-store-versionNumber']); $('[name="fl-store-versionNumber"]').val(newVersionNumber); - + saveAppStoreData(); $('#fl-store-teams').val(''); $('.appStore-more-options').removeClass('show'); @@ -547,12 +549,12 @@ function save(origin, submission) { .then(function(newSubmission) { var cloneCredentialsPromise = Promise.resolve(); - if (origin === "appStore") { + if (origin === "appStore") { newSubmission.data['fl-credentials'] = 'submission-' + newSubmission.id; appStoreSubmission = newSubmission; cloneCredentialsPromise = cloneCredentials(organizationID, previousCredentials, appStoreSubmission); } - if (origin === "enterprise") { + if (origin === "enterprise") { newSubmission.data['fl-credentials'] = 'submission-' + newSubmission.id; enterpriseSubmission = newSubmission; cloneCredentialsPromise = cloneCredentials(organizationID, previousCredentials, enterpriseSubmission); @@ -568,8 +570,8 @@ function save(origin, submission) { setTimeout(function() { $('.save-' + origin + '-progress').removeClass('saved'); }, 4000); - }); - }); + }); + }); }); } @@ -825,7 +827,7 @@ function saveAppStoreData(request) { } /* Manual release */ - if (name === "fl-store-manualRelease") { + if (name === "fl-store-manualRelease") { data[name] = $('[name="'+name+'"]').is(':checked'); return; } @@ -1028,10 +1030,10 @@ function cloneCredentials(organizationId, credentialKey, submission, saveData) { } }).then(() => { if (saveData) { - return Fliplet.App.Submissions.update(submission.id, submission.data); - } + return Fliplet.App.Submissions.update(submission.id, submission.data); + } - return Promise.resolve(); + return Promise.resolve(); }).catch(() => { //do nothing, a new credential will be created after the user logs in }); @@ -1112,7 +1114,7 @@ function refreshAppStoreOptions(devEmail, selectedTeamId, selectedTeamName) { } return searchCredentials(organizationID, { - email: devEmail, + email: devEmail, type: 'apple', teamId: selectedTeamId }) @@ -1142,16 +1144,21 @@ function refreshAppStoreOptions(devEmail, selectedTeamId, selectedTeamName) { if(credential) { return credential; } + var previousResults = appStoreSubmission.data.previousResults; + //make sure that previous results are obtained from latest completed submission. + if (!_.isUndefined(previousAppStoreSubmission)) { + previousResults = previousAppStoreSubmission.result; + } //if we dont have any credentials we need to check previous result for a credential object - if(!_.isUndefined(appStoreSubmission.data.previousResults) && (!_.isUndefined(appStoreSubmission.data.previousResults.p12) || !_.isUndefined(appStoreSubmission.data.previousResults.certificate)) && appStoreSubmission.data['fl-store-teamId'] === selectedTeamId) { + if(!_.isUndefined(previousResults) && (!_.isUndefined(previousResults.p12) || !_.isUndefined(previousResults.certificate)) && appStoreSubmission.data['fl-store-teamId'] === selectedTeamId) { return { teamId: selectedTeamId, teamName: selectedTeamName, - certSigningRequest: appStoreSubmission.data.previousResults.certSigningRequest, - p12: appStoreSubmission.data.previousResults.p12.files[0], - certificate: appStoreSubmission.data.previousResults.certificate.files[0], - content: appStoreSubmission.data.previousResults.content + certSigningRequest: previousResults.certSigningRequest, + p12: previousResults.p12.files[0], + certificate: previousResults.certificate.files[0], + content: previousResults.content }; } @@ -1193,7 +1200,7 @@ function refreshAppEnterpriseOptions(devEmail, selectedTeamId, selectedTeamName) } return searchCredentials(organizationID, { - email: devEmail, + email: devEmail, type: 'apple-enterprise', teamId: selectedTeamId }) @@ -1223,16 +1230,20 @@ function refreshAppEnterpriseOptions(devEmail, selectedTeamId, selectedTeamName) if(credential) { return credential; } - + var previousResults = enterpriseSubmission.data.previousResults; + //make sure that previous results are obtained from latest completed submission. + if (!_.isUndefined(previousEnterpriseStoreSubmission)) { + previousResults = previousEnterpriseStoreSubmission.result; + } //if we dont have any credentials we need to check previous result for a credential object - if(!_.isUndefined(enterpriseSubmission.data.previousResults) && (!_.isUndefined(enterpriseSubmission.data.previousResults.p12) || !_.isUndefined(enterpriseSubmission.data.previousResults.certificate)) && enterpriseSubmission.data['fl-ent-teamId'] === selectedTeamId) { + if(!_.isUndefined(previousResults) && (!_.isUndefined(previousResults.p12) || !_.isUndefined(previousResults.certificate)) && enterpriseSubmission.data['fl-ent-teamId'] === selectedTeamId) { return { teamId: selectedTeamId, teamName: selectedTeamName, - certSigningRequest: enterpriseSubmission.data.previousResults.certSigningRequest, - p12: enterpriseSubmission.data.previousResults.p12.files[0], - certificate: enterpriseSubmission.data.previousResults.certificate.files[0], - content: enterpriseSubmission.data.previousResults.content + certSigningRequest: previousResults.certSigningRequest, + p12: previousResults.p12.files[0], + certificate: previousResults.certificate.files[0], + content: previousResults.content }; } @@ -1363,14 +1374,14 @@ function checkGroupErrors() { }); } -function validateScreenshots() { +function validateScreenshots() { var imageErrors = []; var supportedFormats = [[1242,2208], [2048,2732], [2732,2048]]; var allScreenShots = _.concat(screenShotsMobile, screenShotsTablet); _.forEach(allScreenShots, function(screenshot, key) { var supportedSize = _.find(supportedFormats, function(format) { - return format[0] === screenshot.size[0] && format[1] === screenshot.size[1]; + return format[0] === screenshot.size[0] && format[1] === screenshot.size[1]; }); if (!screenshot.appId && !supportedSize) { @@ -1380,8 +1391,8 @@ function validateScreenshots() { if (imageErrors.length > 0) { imageErrors.unshift('The following screenshots have an invalid size:'); - imageErrors.push('Supported screenshot sizes are:'); - imageErrors.push('1242 x 2208 | 2048 x 2732 | 2732 x 2048'); + imageErrors.push('Supported screenshot sizes are:'); + imageErrors.push('1242 x 2208 | 2048 x 2732 | 2732 x 2048'); var errorMessage = _.join(imageErrors, '\n\r'); alert(errorMessage); return false; @@ -1530,7 +1541,7 @@ $('#appStoreConfiguration').validator().on('submit', function(event) { if (appInfo && appInfo.productionAppId) { if (allAppData.indexOf('appStore') > -1) { - if (appStoreLoggedIn) { + if (appStoreLoggedIn) { var certificateKind = $('[name="fl-store-distribution"]:checked').val(); if (certificateKind === 'generate-file' && !appStoreCertificateCreated) { @@ -1582,7 +1593,7 @@ $('#enterpriseConfiguration').validator().on('submit', function(event) { alert('Please log in with the Apple Developer Account or choose to enter the data manually.'); return; } - + var credentialKind = $('[name="fl-ent-distribution"]:checked').val(); if (credentialKind === 'generate-file' && !enterpriseCertificateCreated) { @@ -1723,7 +1734,7 @@ $('.login-appStore-button').on('click', function() { }); $('.log-out-appStore').on('click', function() { - setCredentials(organizationID, appStoreSubmission.id, { + setCredentials(organizationID, appStoreSubmission.id, { email: null, password: null, teamId: null @@ -1733,7 +1744,7 @@ $('.log-out-appStore').on('click', function() { $('.appStore-logged-email').html(''); $('.appStore-login-details').removeClass('hidden'); $('.appStore-logged-in, .appStore-more-options, .appStore-teams').removeClass('show'); - }); + }); }); $('[name="fl-store-distribution"]').on('change', function() { @@ -1782,7 +1793,7 @@ $('#fl-store-teams').on('change', function() { $('.appStore-upload-certificate').addClass('disabled'); } - var devEmail = $('#fl-store-appDevLogin').val(); + var devEmail = $('#fl-store-appDevLogin').val(); return refreshAppStoreOptions(devEmail, value, teamName); }); @@ -1915,7 +1926,7 @@ $('.login-enterprise-button').on('click', function() { }) .then(function() { $('[name="fl-ent-distribution"][value="generate-file"]').prop('checked', true).trigger('change'); - return enterpriseTeamSetup(devEmail, $this); + return enterpriseTeamSetup(devEmail, $this); }) .catch(function(error) { if (error.responseJSON) { @@ -1928,8 +1939,8 @@ $('.login-enterprise-button').on('click', function() { } }); -$('.log-out-enterprise').on('click', function() { - setCredentials(organizationID, enterpriseSubmission.id, { +$('.log-out-enterprise').on('click', function() { + setCredentials(organizationID, enterpriseSubmission.id, { email: null, password: null, teamId: null @@ -1938,8 +1949,8 @@ $('.log-out-enterprise').on('click', function() { $('#fl-ent-appDevPass').prop('required', true); $('.enterprise-logged-email').html(''); $('.enterprise-login-details').removeClass('hidden'); - $('.enterprise-logged-in, .enterprise-more-options, .enterprise-teams').removeClass('show'); - }); + $('.enterprise-logged-in, .enterprise-more-options, .enterprise-teams').removeClass('show'); + }); }); $('[name="fl-ent-distribution"]').on('change', function() { @@ -2002,7 +2013,7 @@ $('.enterprise-generate-cert').on('click', function() { teamId: teamId, teamName: teamName }) - .then(function() { + .then(function() { return createCertificates(organizationID, enterpriseSubmission.id) .then(function(response) { enterpriseCertificateCreated = true; @@ -2138,7 +2149,7 @@ $(document).on('click', '[data-cancel-build-id]', function() { $('.browse-files').on('click', function(e) { e.preventDefault(); - + Fliplet.Studio.emit('overlay', { name: 'widget', options: { @@ -2211,7 +2222,7 @@ function checkSubmissionStatus(origin, iosSubmissions) { build.testingMessage = 'Your app is being tested by Fliplet'; } } - + if (submission.result.appBuild && submission.result.appBuild.files) { appBuild = _.find(submission.result.appBuild.files, function(file) { var dotIndex = file.url.lastIndexOf('.'); @@ -2276,12 +2287,19 @@ function checkSubmissionStatus(origin, iosSubmissions) { } function submissionChecker(submissions) { + debugger; + var asub = _.filter(submissions, function(submission) { return submission.data.submissionType === "appStore" && submission.platform === "ios"; }); var completedAsub = _.filter(asub, function(submission) { - return submission.data.status === "completed"; + return submission.status === "completed"; + }); + + //Get the Submission data from the first completed submission, it has the certification values that are in use on the app store. + previousAppStoreSubmission = _.minBy(completedAsub, function(el) { + return el.id; }); appStoreSubmissionInStore = (completedAsub.length > 0); @@ -2295,8 +2313,8 @@ function submissionChecker(submissions) { if (!appStoreSubmission) { appStoreSubmission = {}; } - - var cloneAppStoreCredentialsPromise = Promise.resolve(); + + var cloneAppStoreCredentialsPromise = Promise.resolve(); if (appStoreSubmission.data && !appStoreSubmission.data['fl-credentials']) { var prevSubCred = _.filter(asub, function(submission) { @@ -2307,17 +2325,25 @@ function submissionChecker(submissions) { return new Date(el.createdAt).getTime(); }); - appStoreSubmission.data['fl-credentials'] = 'submission-' + appStoreSubmission.id; + appStoreSubmission.data['fl-credentials'] = 'submission-' + appStoreSubmission.id; if(previousSubWithCredentials) { cloneAppStoreCredentialsPromise = cloneCredentials(organizationID, previousSubWithCredentials.data['fl-credentials'], appStoreSubmission, true); - } + } } var esub = _.filter(submissions, function(submission) { return submission.data.submissionType === "enterprise" && submission.platform === "ios"; }); + var completedEsub = _.filter(esub, function(submission) { + return submission.status === "completed"; + }); + //Get the Submission data from the first completed submission, it has certification values that are in use on the developer portal. + previousEnterpriseStoreSubmission = _.minBy(completedEsub, function(el) { + return el.id; + }); + checkSubmissionStatus("enterprise", esub); enterpriseSubmission = _.maxBy(esub, function(el) { @@ -2327,8 +2353,8 @@ function submissionChecker(submissions) { if (!enterpriseSubmission) { enterpriseSubmission = {}; } - - var cloneEnterpriseCredentialsPromise = Promise.resolve(); + + var cloneEnterpriseCredentialsPromise = Promise.resolve(); if (enterpriseSubmission.data && !enterpriseSubmission.data['fl-credentials']) { var prevSubCred = _.filter(esub, function(submission) { @@ -2339,7 +2365,7 @@ function submissionChecker(submissions) { return new Date(el.createdAt).getTime(); }); - enterpriseSubmission.data['fl-credentials'] = 'submission-' + enterpriseSubmission.id; + enterpriseSubmission.data['fl-credentials'] = 'submission-' + enterpriseSubmission.id; if(previousSubWithCredentials) { cloneEnterpriseCredentialsPromise = cloneCredentials(organizationID, previousSubWithCredentials.data['fl-credentials'], enterpriseSubmission, true); @@ -2480,7 +2506,7 @@ function initialLoad(initial, timeout) { }) .then(function(user) { userInfo = user; - return submissionChecker(submissions); + return submissionChecker(submissions); }); }) .then(function() {