Merge pull request #1046 from pixelfed/frontend-ui-refactor

Instagram Import
This commit is contained in:
daniel 2019-03-18 21:14:09 -06:00 committed by GitHub
commit f2cadd136f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 51 additions and 10 deletions

View file

@ -11,6 +11,7 @@ use App\{
Profile, Profile,
User User
}; };
use App\Jobs\ImportPipeline\ImportInstagram;
trait Instagram trait Instagram
{ {
@ -21,6 +22,13 @@ trait Instagram
public function instagramStart(Request $request) public function instagramStart(Request $request)
{ {
$completed = ImportJob::whereProfileId(Auth::user()->profile->id)
->whereService('instagram')
->whereNotNull('completed_at')
->exists();
if($completed == true) {
return redirect(route('settings'))->with(['errors' => ['You can only import from Instagram once.']]);
}
$job = $this->instagramRedirectOrNew(); $job = $this->instagramRedirectOrNew();
return redirect($job->url()); return redirect($job->url());
} }
@ -134,8 +142,6 @@ trait Instagram
$job->stage = 3; $job->stage = 3;
$job->save(); $job->save();
return redirect($job->url()); return redirect($job->url());
return $json;
} }
public function instagramStepThree(Request $request, $uuid) public function instagramStepThree(Request $request, $uuid)
@ -148,4 +154,19 @@ trait Instagram
->firstOrFail(); ->firstOrFail();
return view('settings.import.instagram.step-three', compact('profile', 'job')); return view('settings.import.instagram.step-three', compact('profile', 'job'));
} }
public function instagramStepThreeStore(Request $request, $uuid)
{
$profile = Auth::user()->profile;
$job = ImportJob::whereProfileId($profile->id)
->whereNull('completed_at')
->whereUuid($uuid)
->whereStage(3)
->firstOrFail();
ImportInstagram::dispatchNow($job);
return redirect($profile->url());
}
} }

View file

@ -11,6 +11,10 @@ class ImportController extends Controller
public function __construct() public function __construct()
{ {
$this->middleware('auth'); $this->middleware('auth');
if(config('pixelfed.import.instagram.enabled') != true) {
abort(404, 'Feature not enabled');
}
} }
} }

View file

@ -24,7 +24,7 @@ class ImportInstagram implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $job; protected $import;
/** /**
* Delete the job if its models no longer exist. * Delete the job if its models no longer exist.
@ -38,9 +38,9 @@ class ImportInstagram implements ShouldQueue
* *
* @return void * @return void
*/ */
public function __construct(ImportJob $job) public function __construct(ImportJob $import)
{ {
$this->job = $job; $this->import = $import;
} }
/** /**
@ -50,8 +50,12 @@ class ImportInstagram implements ShouldQueue
*/ */
public function handle() public function handle()
{ {
$job = $this->job; if(config('pixelfed.import.instagram.enabled') != true) {
$profile = $this->job->profile; return;
}
$job = ImportJob::findOrFail($this->import->id);
$profile = Profile::findOrFail($job->profile_id);
$json = $job->mediaJson(); $json = $job->mediaJson();
$collection = $json['photos']; $collection = $json['photos'];
$files = $job->files; $files = $job->files;
@ -74,9 +78,9 @@ class ImportInstagram implements ShouldQueue
$filename = last( explode('/', $import['path']) ); $filename = last( explode('/', $import['path']) );
$importData = ImportData::whereJobId($job->id) $importData = ImportData::whereJobId($job->id)
->whereOriginalName($filename) ->whereOriginalName($filename)
->firstOrFail(); ->first();
if(is_file(storage_path("app/$importData->path")) == false) { if(empty($importData) || is_file(storage_path("app/$importData->path")) == false) {
continue; continue;
} }
@ -88,6 +92,8 @@ class ImportInstagram implements ShouldQueue
$status->profile_id = $profile->id; $status->profile_id = $profile->id;
$status->caption = strip_tags($caption); $status->caption = strip_tags($caption);
$status->is_nsfw = false; $status->is_nsfw = false;
$status->type = 'photo';
$status->scope = 'unlisted';
$status->visibility = 'unlisted'; $status->visibility = 'unlisted';
$status->created_at = $taken_at; $status->created_at = $taken_at;
$status->save(); $status->save();

View file

@ -263,5 +263,15 @@ return [
'ap_inbox' => env('ACTIVITYPUB_INBOX', false), 'ap_inbox' => env('ACTIVITYPUB_INBOX', false),
'ap_shared' => env('ACTIVITYPUB_SHAREDINBOX', false), 'ap_shared' => env('ACTIVITYPUB_SHAREDINBOX', false),
'ap_delivery_timeout' => env('ACTIVITYPUB_DELIVERY_TIMEOUT', 2.0), 'ap_delivery_timeout' => env('ACTIVITYPUB_DELIVERY_TIMEOUT', 2.0),
'ap_delivery_concurrency' => env('ACTIVITYPUB_DELIVERY_CONCURRENCY', 10) 'ap_delivery_concurrency' => env('ACTIVITYPUB_DELIVERY_CONCURRENCY', 10),
'import' => [
'instagram' => [
'enabled' => env('IMPORT_INSTAGRAM_ENABLED', false),
'limits' => [
'posts' => (int) env('IMPORT_INSTAGRAM_POST_LIMIT', 100),
'size' => (int) env('IMPORT_INSTAGRAM_SIZE_LIMIT', 250)
]
]
],
]; ];