diff --git a/app/Http/Controllers/MarketController.php b/app/Http/Controllers/MarketController.php index 2abaf251..d22b388c 100644 --- a/app/Http/Controllers/MarketController.php +++ b/app/Http/Controllers/MarketController.php @@ -58,21 +58,6 @@ class MarketController extends Controller return $plugins; } - public function checkUpdates(PluginManager $manager) - { - $pluginsHaveUpdate = collect($this->getAllAvailablePlugins()) - ->filter(function ($item) use ($manager) { - $plugin = $manager->get($item['name']); - - return $plugin && Comparator::greaterThan($item['version'], $plugin->version); - }); - - return json([ - 'available' => $pluginsHaveUpdate->isNotEmpty(), - 'plugins' => $pluginsHaveUpdate->values()->all(), - ]); - } - public function download(Request $request, PluginManager $manager, PackageManager $package) { $name = $request->get('name'); diff --git a/app/Http/Controllers/UpdateController.php b/app/Http/Controllers/UpdateController.php index f3682e55..e48b2536 100644 --- a/app/Http/Controllers/UpdateController.php +++ b/app/Http/Controllers/UpdateController.php @@ -38,11 +38,6 @@ class UpdateController extends Controller return view('admin.update', compact('info', 'error', 'extra')); } - public function checkUpdates() - { - return json(['available' => $this->canUpdate()]); - } - public function download(Request $request, PackageManager $package, Filesystem $filesystem) { if (!$this->canUpdate()) { diff --git a/app/Http/View/Composers/FootComposer.php b/app/Http/View/Composers/FootComposer.php index b63b8bd1..5ec4ec77 100644 --- a/app/Http/View/Composers/FootComposer.php +++ b/app/Http/View/Composers/FootComposer.php @@ -51,9 +51,6 @@ class FootComposer if ($pluginI18n = $this->javascript->plugin($locale)) { $scripts[] = $pluginI18n; } - if ($this->request->is('admin*') && auth()->user()->permission >= User::SUPER_ADMIN) { - $scripts[] = $this->webpack->url('check-updates.js'); - } if (Str::startsWith(config('app.asset.env'), 'dev')) { $scripts[] = $this->webpack->url('style.js'); } diff --git a/resources/assets/src/scripts/check-updates.ts b/resources/assets/src/scripts/check-updates.ts deleted file mode 100644 index 740ab679..00000000 --- a/resources/assets/src/scripts/check-updates.ts +++ /dev/null @@ -1,39 +0,0 @@ -// KEEP THIS FILE DEPENDENCY-FREE! - -const init: RequestInit = { - credentials: 'same-origin', - headers: new Headers({ - Accept: 'application/json', - }), -} - -export async function checkForUpdates(): Promise { - const response = await fetch(`${blessing.base_url}/admin/update/check`, init) - - if (response.ok) { - const data = await response.json() - const el = document.querySelector(`[href="${blessing.base_url}/admin/update"] p`) - if (data.available && el) { - el.innerHTML += 'New' - } - } -} - -export async function checkForPluginUpdates(): Promise { - const response = await fetch(`${blessing.base_url}/admin/plugins/market/check`, init) - - if (response.ok) { - const data = await response.json() - const el = document.querySelector(`[href="${blessing.base_url}/admin/plugins/market"] p`) - if (data.available && el) { - const length = data.plugins.length as number - el.innerHTML += `${length}` - } - } -} - -// istanbul ignore next -if (process.env.NODE_ENV !== 'test') { - checkForUpdates() - checkForPluginUpdates() -} diff --git a/resources/assets/tests/scripts/check-updates.test.ts b/resources/assets/tests/scripts/check-updates.test.ts deleted file mode 100644 index 53056d9b..00000000 --- a/resources/assets/tests/scripts/check-updates.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { - checkForUpdates, - checkForPluginUpdates, -} from '@/scripts/check-updates' -import { init } from '@/scripts/net' - -test('check for BS updates', async () => { - window.fetch = jest.fn() - .mockResolvedValueOnce({ ok: false }) - .mockResolvedValueOnce({ - ok: true, - json: () => Promise.resolve({ available: false }), - }) - .mockResolvedValueOnce({ - ok: true, - json: () => Promise.resolve({ available: true }), - }) - - document.body.innerHTML = '

' - - await checkForUpdates() - expect(window.fetch).toBeCalledWith('/admin/update/check', init) - expect(document.querySelector('p')!.innerHTML).toBe('') - - await checkForUpdates() - expect(document.querySelector('p')!.innerHTML).toBe('') - - await checkForUpdates() - expect(document.querySelector('p')!.innerHTML).toContain('New') -}) - -test('check for plugins updates', async () => { - window.fetch = jest.fn() - .mockResolvedValueOnce({ ok: false }) - .mockResolvedValueOnce({ - ok: true, - json: () => Promise.resolve({ available: false }), - }) - .mockResolvedValueOnce({ - ok: true, - json: () => Promise.resolve({ available: true, plugins: [{}] }), - }) - - document.body.innerHTML = '

' - - await checkForPluginUpdates() - expect(window.fetch).toBeCalledWith('/admin/plugins/market/check', init) - expect(document.querySelector('p')!.innerHTML).toBe('') - - await checkForPluginUpdates() - expect(document.querySelector('p')!.innerHTML).toBe('') - - await checkForPluginUpdates() - expect(document.querySelector('p')!.innerHTML).toContain('1') -}) - -test('do not update anything if element not found', async () => { - window.fetch = jest.fn() - .mockResolvedValueOnce({ - ok: true, - json: () => Promise.resolve({ available: true, latest: '4.0.0' }), - }) - .mockResolvedValueOnce({ - ok: true, - json: () => Promise.resolve({ available: true, plugins: [{}] }), - }) - - await Promise.all([checkForUpdates, checkForPluginUpdates]) -}) diff --git a/resources/misc/changelogs/en/5.0.0.md b/resources/misc/changelogs/en/5.0.0.md index 7e36016f..200d2267 100644 --- a/resources/misc/changelogs/en/5.0.0.md +++ b/resources/misc/changelogs/en/5.0.0.md @@ -62,6 +62,7 @@ - Removed enabling or disabling Redis via Web UI. - Removed Legacy API from core. (Install plugin if you need it.) - Removed Universal Skin API from core. (Install plugin if you need it.) +- Removed auto update check. ## Internal Changes diff --git a/resources/misc/changelogs/zh_CN/5.0.0.md b/resources/misc/changelogs/zh_CN/5.0.0.md index 7298c91c..203722c9 100644 --- a/resources/misc/changelogs/zh_CN/5.0.0.md +++ b/resources/misc/changelogs/zh_CN/5.0.0.md @@ -62,6 +62,7 @@ - 移除通过 UI 来开启或关闭 Redis 的功能 - 移除「传统皮肤加载方式」(如有需要,请安装插件) - 移除 Universal Skin API(如有需要,请安装插件) +- 移除自动更新检查 ## 内部更改 diff --git a/routes/web.php b/routes/web.php index 71b93126..8785e45e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -158,13 +158,11 @@ Route::group(['middleware' => ['authorize', 'admin'], 'prefix' => 'admin'], func Route::view('/market', 'admin.market'); Route::get('/market-data', 'MarketController@marketData'); - Route::get('/market/check', 'MarketController@checkUpdates'); Route::post('/market/download', 'MarketController@download'); }); Route::group(['prefix' => 'update', 'middleware' => 'super-admin'], function () { Route::any('', 'UpdateController@showUpdatePage'); - Route::get('/check', 'UpdateController@checkUpdates'); Route::any('/download', 'UpdateController@download'); }); }); diff --git a/tests/HttpTest/ControllersTest/MarketControllerTest.php b/tests/HttpTest/ControllersTest/MarketControllerTest.php index 9cc28722..72f955a7 100644 --- a/tests/HttpTest/ControllersTest/MarketControllerTest.php +++ b/tests/HttpTest/ControllersTest/MarketControllerTest.php @@ -91,58 +91,6 @@ class MarketControllerTest extends TestCase ]); } - public function testCheckUpdates() - { - $this->setupGuzzleClientMock(); - - $fakeRegistry = json_encode(['packages' => [ - [ - 'name' => 'fake', - 'version' => '0.0.1', - 'dist' => ['url' => 'http://nowhere.test/', 'shasum' => 'deadbeef'], - ], - ]]); - - // Not installed - $this->appendToGuzzleQueue(200, [], $fakeRegistry); - $this->getJson('/admin/plugins/market/check') - ->assertJson([ - 'available' => false, - 'plugins' => [], - ]); - - $this->mock(PluginManager::class, function ($mock) { - $mock->shouldReceive('get') - ->with('fake') - ->twice() - ->andReturn(new Plugin('', ['name' => 'fake', 'version' => '0.0.1'])); - }); - // Plugin up-to-date - $this->appendToGuzzleQueue(200, [], $fakeRegistry); - $this->getJson('/admin/plugins/market/check') - ->assertJson([ - 'available' => false, - 'plugins' => [], - ]); - - // New version available - $fakeRegistry = json_encode(['packages' => [ - [ - 'name' => 'fake', - 'version' => '2.3.3', - 'dist' => ['url' => 'http://nowhere.test/', 'shasum' => 'deadbeef'], - ], - ]]); - $this->appendToGuzzleQueue(200, [], $fakeRegistry); - $this->getJson('/admin/plugins/market/check') - ->assertJson([ - 'available' => true, - 'plugins' => [[ - 'name' => 'fake', - ]], - ]); - } - public function testMarketData() { $this->setupGuzzleClientMock([ diff --git a/tests/HttpTest/ControllersTest/UpdateControllerTest.php b/tests/HttpTest/ControllersTest/UpdateControllerTest.php index 4f2c108e..2190c1ca 100644 --- a/tests/HttpTest/ControllersTest/UpdateControllerTest.php +++ b/tests/HttpTest/ControllersTest/UpdateControllerTest.php @@ -54,21 +54,6 @@ class UpdateControllerTest extends TestCase $this->get('/admin/update')->assertSee(config('app.version'))->assertSee('8.9.3'); } - public function testCheckUpdates() - { - $this->setupGuzzleClientMock(); - - // Update source is unavailable - $this->appendToGuzzleQueue([ - new RequestException('Connection Error', new Request('GET', 'whatever')), - ]); - $this->getJson('/admin/update/check')->assertJson(['available' => false]); - - // New version available - $this->appendToGuzzleQueue(200, [], $this->mockFakeUpdateInfo('8.9.3')); - $this->getJson('/admin/update/check')->assertJson(['available' => true]); - } - public function testDownload() { $this->setupGuzzleClientMock(); diff --git a/tests/HttpTest/ViewTest/ComposersTest/FootComposerTest.php b/tests/HttpTest/ViewTest/ComposersTest/FootComposerTest.php index ce3343d0..23e2612a 100644 --- a/tests/HttpTest/ViewTest/ComposersTest/FootComposerTest.php +++ b/tests/HttpTest/ViewTest/ComposersTest/FootComposerTest.php @@ -38,10 +38,6 @@ class FootComposerTest extends TestCase $this->mock(Webpack::class, function ($mock) { $mock->shouldReceive('url')->with('style.css'); $mock->shouldReceive('url')->with('skins/skin-blue.min.css'); - $mock->shouldReceive('url') - ->with('check-updates.js') - ->once() - ->andReturn('check-updates.js'); $mock->shouldReceive('url') ->with('style.js') ->atLeast(1) @@ -55,12 +51,7 @@ class FootComposerTest extends TestCase $this->get('/user') ->assertSee('en.js') ->assertSee('en_plugin.js') - ->assertSee('app.js') - ->assertDontSee('check-updates.js'); - - $superAdmin = factory(User::class, 'superAdmin')->make(); - $this->actingAs($superAdmin); - $this->get('/admin')->assertSee('check-updates.js'); + ->assertSee('app.js'); } public function testAddExtra() diff --git a/webpack.config.js b/webpack.config.js index 3dcf04a2..b929360a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -13,7 +13,6 @@ const config = { mode: devMode ? 'development' : 'production', entry: { app: './resources/assets/src/index.ts', - 'check-updates': './resources/assets/src/scripts/check-updates.ts', 'language-chooser': './resources/assets/src/scripts/language-chooser.ts', style: [ 'bootstrap/dist/css/bootstrap.min.css',